3794 - Interclas No Memory 1

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dau două șiruri de numere naturale, cu n, respectiv m elemente, ordonate crescător. Să se determine al treilea șir, care să conţină, în ordine crescătoare, elementele din primele două şiruri.

Date de intrare[edit | edit source]

Fișierul de intrare filein.txt conține pe prima linie numerele naturale n, respectiv m, iar apoi pe a doua linie numerele primului șir, și pe a treia linie, numerele celui de-al doilea șir, elementele șirurilor fiind separate prin spații.

Date de ieșire[edit | edit source]

Fișierul de ieșire fileout.txt va conține numerele celui de-al treilea șir, separate prin spații.

Restricții și precizări[edit | edit source]

  • 1 ≤ n, m ≤ 100.000
  • elementele șirului vor fi mai mici decât 1.000.000.000

Exemplul 1[edit | edit source]

filein.txt
7 8
1 3 4 6 7 8 8
2 4 5 6 8 9 9 12
fileout.txt
Datele introduse corespund restricțiilor impuse.
1 2 3 4 4 5 6 6 7 8 8 8 9 9 12

Exemplul 2[edit | edit source]

filein.txt
7 8
1 3 4 6 7 8 1000000000
2 4 5 6 8 9 9 12
fileout.txt
Datele introduse nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 3794 - Interclas No Memory 1

def validare(sir_validare1, sir_validare2): # functia de validare a datelor de intrare

   if len(sir_validare1) > 100000 or len(sir_validare2) > 100000:
       raise ValueError
   for numar in sir_validare1 + sir_validare2:
       if not isinstance(numar, int) or numar >= 1000000000:
           raise ValueError
   fisier_iesire.write("Datele introduse corespund restrictiilor impuse.\n")


def rezolvare(sir_rezolvare1, sir_rezolvare2): # functia de rezolvare

   al_treilea_sir = sorted(sir_rezolvare1 + sir_rezolvare2)
   fisier_iesire.write(' '.join(map(str, al_treilea_sir)))


if __name__ == '__main__':

   fisier_intrare = open("filein.txt", "r")  # declararea fisierelor
   fisier_iesire = open("fileout.txt", "w")  # fisierul out trebuie declarat cu optiunea "w" (write)
   try:
       n, m = map(int, fisier_intrare.readline().split())
       sir1 = list(map(int, fisier_intrare.readline().split()))
       sir2 = list(map(int, fisier_intrare.readline().split()))
       validare(sir1, sir2)  # apelul functiei de validare
       rezolvare(sir1, sir2)  # apelul functiei de rezolvare
   except ValueError:
       fisier_iesire.write("Datele introduse nu corespund restrictiilor impuse.")

</syntaxhighlight>