# PBinfo #301 – Frecventa1 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerinţa
Se dau n numere  naturale cu cel mult două cifre fiecare. Afişaţi valorile distincte în ordinea descrescătoare a numărului de apariţii.

Date de intrare
Fişierul de intrare frecventa1.in conţine pe prima linie numărul n; urmează cele n numere, dispuse pe mai multe linii şi separate prin spaţii.

Date de ieşire
Fişierul de ieşire frecventa1.out va conţine pe prima linie valorile distincte dintre cele n, în ordinea descrescătoare a numărului de apariţii.

Restricţii şi precizări

1 ≤ n ≤ 100.000
dacă două valori apar de acelaşi număr de ori, se va afişa mai întâi valoarea mai mică

Exemplu:
frecventa1.in

8
3 19 3 65 3 19 14 3
frecventa1.out

3 19 14 65

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("frecventa1.in");
ofstream fout("frecventa1.out");
int n, a[100],v[100];
int main(){
	fin >> n;
	int x;
	for(int i=1;i<=n;++i){
		fin >> x;
		v[x] ++;
	}
	for(int i=0;i<100;++i)
		a[i] = i;
	for(int i=0;i<100;++i)
		for(int j=i+1;j<100;++j)
			if(v[a[i]]<v[a[j]]){
				int aux = a[i];
				a[i] = a[j];
				a[j] = aux;
			}
			else
				if(v[a[i]] == v[a[j]] && a[i]>a[j]){
					int aux = a[i];
					a[i] = a[j];
					a[j] = aux;
				}
	for(int i=0;i<100;++i)
		if(v[a[i]])
			fout << a[i] << " ";
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/301)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/301/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-301/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
