2268 - Colegi

De la Universitas MediaWiki

Cerinţa

Dirigu’ vrea să știe care este cel mai frecvent prenume printre elevii din clasa noastră. Pentru aceasta a realizat o listă cu cele n prenume ale elevilor din clasă și acum vă cere să determinați prenumele cel mai frecvent și numărul său de apariții. Dacă sunt mai multe prenume cu număr maxim de apariții se va determina primul în ordine alfabetică. .

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n prenume ale colegilor.

Date de ieșire

Programul va afișa pe ecran S k, separate printr-un spațiu, reprezentând prenumele determinat și numărul de apariții a acestuia.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu respecta cerintele impuse." , iar daca se indeplinesc, se afiseaza mesajul "Datele de intrare respecta cerintele impuse."

Restricţii şi precizări

  • 1 ≤ n ≤ 100.000 – mda, este o clasă cam mare…

Exemplul 1

Intrare
8 
Maria Tudor Andrei Tudor George Andrei Ioana Andrei
Ieșire
Datele de intrare respecta cerintele impuse.
Andrei 3


Exemplul 2

Intrare
0


Ieșire
Datele de intrare nu respecta cerintele impuse.


Rezolvare

def cel_mai_frecvent_prenume(n, prenume):
    frecventa = {}

    for nume in prenume:
        if nume in frecventa:
            frecventa[nume] += 1
        else:
            frecventa[nume] = 1

    prenume_max_frecventa = max(frecventa, key=lambda x: (frecventa[x], x))
    numar_aparitii = frecventa[prenume_max_frecventa]

    return prenume_max_frecventa, numar_aparitii

if __name__ == "__main__":
    try:
        n = int(input("Introdu numărul de prenume: "))
        if 1 <= n <= 100000:
            prenume = input("Introdu lista de prenume separate de spațiu: ").split()

            if len(prenume) != n or any(not nume.isalpha() for nume in prenume):
                print("Datele de intrare nu respecta cerintele impuse.")
            else:
                print("Datele de intrare respecta cerintele impuse.")
                rezultat = cel_mai_frecvent_prenume(n, prenume)
                print(" ".join(map(str, rezultat)))
        else:
            print("Datele de intrare nu respecta cerintele impuse.")
    except ValueError:
        print("Datele de intrare nu respecta cerintele impuse.")