2162 - Conturi
Sursa: [1]
Enunt[edit | edit source]
În oraşul Olimpidia, toate băncile au hotărât să adopte o convenţie în ceea ce priveşte identificarea clienţilor săi, astfel încât fiecare cont deschis de un client să aibă asociat un cod format din exact 6 cifre:
- prima cifră (cea mai din stânga cifră a codului) va reprezenta numărul băncii (acest lucru fiind posibil deoarece în oraş nu sunt mai mult de 9 bănci, acestea fiind numerotate începând de la 1);
- a doua cifră va reprezenta genul persoanei (1 pentru genul masculin şi 2 pentru genul feminin);
- ultimele 4 cifre vor reprezenta suma aflată în contul persoanei în momentul în care se aplică stabilita convenţie.
Cerinţa[edit | edit source]
Cunoscând numărul total de conturi deschise şi codurile corespunzătoare acestora să se determine suma maximă pe care o are o persoană de gen masculin într-un cont aflat la banca X.
Date de intrare[edit | edit source]
Fişierul de intrare conturi.in conţine pe prima linie numerele naturale N X, care reprezintă numărul de conturi deschise la băncile din oraş, respectiv numărul băncii pentru care trebuie aflată suma maximă. Pe următoarele N linii se află N numere naturale nenule, câte un număr pe o linie, reprezentând codurile conturilor, obţinute în urma aplicării convenţiei.
Date de ieșire[edit | edit source]
Fişierul de ieşire conturi.out va conţine o singură linie pe care va fi scrisă suma maximă pe care o persoană de gen masculin o are într-un cont aflat la banca X.
Restricţii şi precizări[edit | edit source]
- 1 ≤ N ≤ 100
- 1 ≤ X ≤ 9
- Pentru datele de test se garantează că există cel puţin un cont la banca X aparţinând unei persoane de gen masculin
Exemplu[edit | edit source]
- conturi.in
- 5 2
- 213400
- 515000
- 229088
- 326909
- 217044
- conturi.out
- 7044
Explicație[edit | edit source]
Există 5 conturi: 3 la banca 2, unul la banca 5 şi unul la banca 3. Dintre cele 3 conturi deschise la banca 2, sunt 2 conturi deţinute de bărbaţi, unul cu suma 3400, celălalt cu suma 7044. Suma maximă cerută este 7044.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
def validare_date_intrare(n, x, conturi):
if n < 1 or n > 1000: return False if x < 1 or x > 9: return False for cont in conturi: if cont < 100 or cont > 999999999: return False return True
if __name__ == "__main__":
with open("conturi.in") as f: n, x = map(int, f.readline().split()) conturi = [int(f.readline().strip()) for _ in range(n)]
if not validare_date_intrare(n, x, conturi): print("Eroare: Datele introduse nu sunt valide!") exit(1)
suma_maxima = 0 for cont in conturi: banca, gen, suma = int(str(cont)[0]), int(str(cont)[1]), int(str(cont)[2:]) if banca == x and gen == 1: suma_maxima = max(suma_maxima, suma)
with open("conturi.out", "w") as f: f.write(str(suma_maxima))
print("Datele sunt introduse corect.")
</syntaxhighlight>