Algorithm
Problem Name: 2 AD-HOC - beecrowd | 2410
Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2410
Frequencia na Aula
Por OBI - Olimpíada Brasileira de Informática 2012 Brazil
Timelimit: 1
Certa vez, numa aula, a professora passou um filme para os alunos assistirem. Durante este filme, ela passou uma lista de presença em sua sala para verificar a presença dos alunos, onde cada aluno deveria inserir apenas seu número de registro. Alguns alunos contudo, como possuem amigos que fogem da aula, decidiram ser camaradas e inseriram os números de registro de seus amigos fujões. O problema é que muitos alunos são amigos de alunos que fogem da aula e alguns números de registro acabaram sendo repetidamente inseridos na lista de presença. Além de tudo, alguns dos alunos que se esperava que não estivessem na aula de fato estavam!
A professora, ao notar que a lista de presença continha alguns números repetidos, ficou sem entender, mas decidiu dar um voto de confiança e dar presença a todos os alunos cujos números de registro estavam na lista. Como são muitos alunos na sala e muitos números com repetição, ela pediu a sua ajuda para determinar o total de alunos que receberam presença na aula.
Entrada
A primeira linha da entrada contém um número inteiro N (1 ≤ N ≤ 105), que informa a quantidade de números de registro que apareceram na lista de presença. Cada uma das N linhas seguintes contém um número de registro Vi (0 ≤ Vi ≤ 106)que foi inserido na lista de presença.
Saída
Seu programa deve imprimir uma única linha, contendo apenas um número inteiro, o número de alunos que receberam presença.
Exemplos de Entrada | Exemplos de Saída |
3 2 3 1 |
3 |
Code Examples
#1 Code Example with C Programming
Code -
C Programming
#include <stdio.h>
void qSortInterno(unsigned *registros, int inicio, int fim);
void qSortI(unsigned *registros, int tam);
int main (void)
{
unsigned qtsRegistros;
int i, presencas;
scanf("%u", &qtsRegistros);
unsigned registros[qtsRegistros];
for (i = 0; i < qtsRegistros; i++)
scanf("%u", ®istros[i]);
qSortI(registros, qtsRegistros);
presencas = 0;
for (i = 0; i < qtsRegistros; i++)
if (registros[i] != registros[i - 1])
presencas++;
printf("%u\n", presencas);
}
void qSortInterno(unsigned *registros, int inicio, int fim)
{
unsigned pivo;
unsigned temp;
int i, j;
if (fim - inicio > 0)
{
if (inicio < fim)
{
i = inicio;
j = fim;
pivo = registros[(i + j) / 2];
do
{
while (registros[i] < pivo)
i++;
while (registros[j] > pivo)
j--;
if (i < = j)
{
temp = registros[i];
registros[i] = registros[j];
registros[j] = temp;
i++; j--;
}
} while (i < = j);
qSortInterno(registros, inicio, j);
qSortInterno(registros, i, fim);
}
}
}
void qSortI(unsigned *registros, int tam)
{
qSortInterno(registros, 0, tam - 1);
}
Copy The Code &
Try With Live Editor
Input
2
3
1
Output
#2 Code Example with C++ Programming
Code -
C++ Programming
#include <iostream>
#include <set>
using namespace std;
int main() {
std::cout.sync_with_stdio(false);
std::cin.sync_with_stdio(false);
int casos, i, davez;
set < int> notas;
cin >> casos;
for (i = 0; i < casos; i++) {
cin >> davez;
notas.insert(davez);
}
cout << (int)notas.size() << endl;
return 0;
}
Copy The Code &
Try With Live Editor
Input
2
3
1
Output