2162 - Conturi
Sursa: [1]
Enunt
Î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
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
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
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
- 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
- conturi.in
- 5 2
- 213400
- 515000
- 229088
- 326909
- 217044
- conturi.out
- 7044
Explicație
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
<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>