0485 - Facebook

De la Universitas MediaWiki

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

# 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)