2162 - Conturi

From Bitnami MediaWiki

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>