3794 - Interclas No Memory 1

De la Universitas MediaWiki

Cerința

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

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

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

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

Exemplul 1

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

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

# 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.")