VREAU REZOLVAREA DE 100P , O AM DE 60 P PE LIMITA DE TIMP DEPASITA
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 ≤ 100000
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
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct data
{
int nr,
ap;
}v[101];
bool descr(const data &a, const data &b)
{
if (a.ap != b.ap) return (a.ap>b.ap);
return (a.nr<b.nr);
}
int main()
{
ifstream f("frecventa1.in");
ofstream g("frecventa1.out");
int n, i, num;
f >> n;
for (i=0; i<100; ++i) v[i].nr=i;
for (i=1; i<=n; ++i)
{
f >> num;
++v[num].ap;
}
sort(v, v+100, descr);
for (i=0; i<100; ++i)
if (v[i].ap) g << v[i].nr << " ";
return 0;
}
Explicație:
având varianta asta de 100, poţi să consulţi şi soluţia oficială...
Alte întrebări interesante
Chimie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă