Problema #301 (Frecventa1) de pe pbinfo:
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 <stdio.h>
#include <stdlib.h>
int v[100],w[100];
int main()
{
freopen ("frecventa1.in","r",stdin);
freopen ("frecventa1.out","w",stdout);
int n,a,i,j,p,max,aux;
scanf ("%d",&n);
for(i=0;i<n;i++) {
scanf ("%d",&a);
v[a]++;
}
for (i=0;i<100;i++)
w[i]=i;
for(j=99;j>0;j--) {
max=v[0];
p=0;
for (i=1;i<=j;i++)
if (v[i]<max ||(v[i]==max && w[p]<w[i])) {
max=v[i];
p=i;
}
v[p]=v[j];
aux=w[p];
w[p]=w[j];
v[j]=max;
w[j]=aux;
}
for (i=0;i<100;i++)
if (v[i])
printf ("%d ", w[i]);
return 0;
}
este in limbajul c
AlexandraAlex:
Mulțumesc mult!
Alte întrebări interesante
Limba română,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Geografie,
9 ani în urmă
Matematică,
9 ani în urmă