0485 - Facebook

From Bitnami MediaWiki
Revision as of 11:15, 23 May 2023 by Adrian (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>

  1. 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>