fbpx

Problema #1460 – serbare – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

La o serbare sunt n grupe de copii care poartă p tipuri de uniforme. Scrieţi un program care să afişeze pe ecran tipurile de uniforme în ordinea descrescătoare a numărului total de copii ce poartă fiecare tip de uniformă. Afişarea se va face pe o singură linie, valoriile fiind separate printr-un spaţiu.

Date de intrare

Fișierul de intrare serbare.in conține, pe prima linie, numerele n şi p, separate printr-un spaţiu, iar pe următoarele n linii câte două valori separate printr-un spaţiu ce reprezintă numărul de copii dintr-o grupă şi respectiv tipul de uniformă pe care aceştia îl poartă.

Date de ieșire

Fișierul de ieșire serbare.out va conţine tipurile de uniforme în ordinea descrescătoare a numărului total de copii ce poartă fiecare tip de uniformă. Numerele vor fi separate printr-un spaţiu.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • 1 ≤ p ≤ 11
  • Numărul de copii dintr-o grupă este cel mult 100
  • Fiecare mărime de uniformă din intervalul [1,p] este purtată de cel puţin un copil.

Exemplu:

serbare.in

5 3
20 2
20 3
30 2
20 1
10 1

serbare.out

2 1 3

Explicaţii:

Tipul 2 de uniformă este purtat de 50 de copii, tipul 1 de 30 de copii, iar tipul 3 de 20 de copii.

#include <bits/stdc++.h>
using namespace std;
ifstream fin("serbare.in");
ofstream fout("serbare.out");
int main()
{
    int f[11]={0} , n , m , c , b , maxi = 0;
    fin >> n >> m;
    for(int i = 0 ; i < n ; ++i)
    {
        fin >> c >> b;
        f[b]+=c;
        if(f[b] > maxi) maxi=f[b];
    }
    for(int i = maxi ; i >= 1 ; --i)
    {
        for(int j = 1 ; j <= m ; ++j)
        {
            if(i==f[j]) 
            fout << j <<" ";
        }
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa