2162 - Conturi

From Bitnami MediaWiki
Revision as of 09:12, 19 May 2023 by Petras.du.ioana (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>