0485 - Facebook
Cerința
Într-un grup sunt nr_personane persoane, numerotate de la 1 la nr_personane și fiecare are cont pe Facebook. Ele îsi dau like-uri unul altuia, dar o persoană nu-și poate da like ei însăși. Despre fiecare pereche de persoane i j se știe câte like-uri a dat persoana i persoanei j.
Să se determine persoana care a primit cele mai multe like-uri.
Date de intrare
Programul citește de la tastatură numărul nr_personane, iar apoi nr_personane șiruri cu câte nr_personane - 1 numere naturale. Al ilea șir reprezintă numărul de like-uri date de persoana i, celeorlate persoane, în ordine.
Date de ieșire
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul rând se va afișea pe ecran numărul pers_nr_max_likeuri, reprezentând numărul de ordine al persoanei cu număr maxim de like-uri primite.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Nu au fost respectate cerintele impuse".
Restricții și precizări
- 1 ⩽ nr_personane ⩽ 100
- dacă sunt mai multe persoane cu număr maxim de like-uri primite, se va afișa cea cu numărul de ordine mai mic
Exemplu 1
- Intrare
- 3
- 1
- 1
- 2
- 1
- 1
- 3
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- 2
Exemplu 2
- Intrare
- 0
- Ieșire
- Nu au fost respectate cerintele impuse
Rezolvare
<syntaxhighlight lang="python" line>
- 0485 - Facebook
from itertools import repeat
def validare(nr_personane, likeuri):
# Daca datele sunt invalide v-om face raise la eroarea ValueError
if (not (nr_personane >= 1 and nr_personane <= 100)): raise ValueError
for i in range(1, nr_personane + 1): if (not (likeuri[i] >= 1 and likeuri[i] <= 100)): raise ValueError
def facebook(nr_personane, likeuri):
pers_nr_max_likeuri = 1
# Verificam ordinea persoanei (in lista) care are cele mai multe like-uri # punand i in pers_nr_max_likeuri cand gasim persoana cu mai multe like-uri for i in range(2, nr_personane + 1): if (likeuri[i] > likeuri[pers_nr_max_likeuri]): pers_nr_max_likeuri = i
print(pers_nr_max_likeuri)
if __name__ == '__main__':
# Citim de la tastatura numerele cerute nr_personane = int(input()) likeuri = list(repeat(0, 105))
for i in range(1, nr_personane + 1): for j in range(1, nr_personane + 1): if i != j: like = int(input()) likeuri[j] += like
# Verificam daca datele introduse sunt valide # daca nu afisam mesajul corespunsador try: validare(nr_personane, likeuri) except ValueError: print("Nu au fost respectate cerintele impuse") else: print("Datele de intrare corespund restricțiilor impuse")
facebook(nr_personane, likeuri)
</syntaxhighlight>