1460 - Serbare
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.
Rezolvare
<syntaxhighlight lang="python" line>
- Deschidem fișierul de intrare
with open('serbare.in', 'r') as intrare:
# Citim numărul de grupe și tipuri de uniforme n, p = map(int, intrare.readline().split()) # Inițializăm un dicționar pentru a stoca numărul total de copii pentru fiecare tip de uniformă uni = {i: 0 for i in range(1, p+1)} # Parcurgem fiecare grup for _ in range(n): # Citim numărul de copii și tipul de uniformă copii, uni_tip = map(int, intrare.readline().split()) # Adăugăm numărul de copii la totalul pentru tipul respectiv de uniformă uni[uni_tip] += copii
- Sortăm tipurile de uniforme în ordinea descrescătoare a numărului total de copii
sort_uni = sorted(uni.items(), key=lambda x: x[1], reverse=True)
- Deschidem fișierul de ieșire
with open('serbare.out', 'w') as iesire:
# Scriem tipurile de uniforme în fișier, separate printr-un spațiu iesire.write(' '.join(str(uni[0]) for uni in sort_uni))
</syntaxhighlight>