Rezolvare completă PbInfo #301 Frecventa1

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

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Frecventa1:

#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;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #301 Frecventa1

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #301 Frecventa1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!