3236 - Par Impar 2: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Linia 6: Linia 6:


==Date de ieșire==
==Date de ieșire==
Fișierul de ieșire <span style=“color: red”> parimpar2.out</span> va conține două numere separate printr-un spațiu, primul reprezentând al <span style=“color: red”> p</span>-lea element par, iar al doilea număr reprezentând al <span style=“color: red”> i</span>-lea element impar din lista numerelor din fișierul de intrare. Dacă nu avem <span style=“color: red”> p</span> elemente pare sau <span style=“color: red”> i</span> elemente impare se va afișa mesajul <span style=“color: red”> Nu Exista.</span>
Fișierul de ieșire <span style=“color: red”> parimpar2.out</span> va conține două numere separate printr-un spațiu, primul reprezentând al <span style=“color: red”> p</span>-lea element par, iar al doilea număr reprezentând al <span style=“color: red”> i</span>-lea element impar din lista numerelor din fișierul de intrare. Dacă nu avem <span style=“color: red”> p</span> elemente pare sau <span style=“color: red”> i</span> elemente impare se va afișa mesajul <span style=“color: red”> "Nu Exista", altfel se va afisa mesajul "Date de intrare valide".</span>


==Restricții și precizări==
==Restricții și precizări==

Versiunea de la data 29 aprilie 2023 17:14

Cerința

Se dau două numere naturale i p și o listă cu numere naturale. Să se determine al p-lea element par din listă și al i-lea element impar din listă.

Date de intrare

Fișierul de intrare parimpar2.in conține pe prima linie numerele i și p, iar pe a doua linie mai multe numere naturale separate prin spații.

Date de ieșire

Fișierul de ieșire parimpar2.out va conține două numere separate printr-un spațiu, primul reprezentând al p-lea element par, iar al doilea număr reprezentând al i-lea element impar din lista numerelor din fișierul de intrare. Dacă nu avem p elemente pare sau i elemente impare se va afișa mesajul "Nu Exista", altfel se va afisa mesajul "Date de intrare valide".

Restricții și precizări

1 ≤ i,p ≤ 100.000 numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 1.000.000.000

Exemplu:

parimpar2.in 2 2 63 83 60 34 92

parimpar2.out 34 83

Explicație

Primul element par este 60, iar al doilea este 34. Primul element impar este 63</span., iar al doilea este 83. Deci se va afișa în fișierul de ieșire 34 83.

parimpar2.in 3 2 37 93 6 49 9 59

parimpar2.out Nu Exista

Explicație

În fișier se găsesc 3 numere impare, dar se găsește doar unul par.

Rezolvare

def validare(i, p, nums):
    if not (1 <= i <= 100000 and 1 <= p <= 100000):
        return False
    if not all(0 <= num <= 1000000000 for num in nums):
        return False
    return True


def parimpar(a, b, nums):
    rez1, rez2 = 0, -1
    for x in nums:
        if x % 2 == 1:
            a -= 1
            if a == 0:
                rez1 = x
        else:
            b -= 1
            if b == 0:
                rez2 = x
        if a == 0 and b == 0:
            break
    if rez1 == 0 or rez2 == -1:
        fout.write("Nu Exista")
    else:
        fout.write(str(rez2) + " " + str(rez1))
    fin.close()
    fout.close()


if __name__ == '__main__':
    fin = open("parimpar2.in")
    fout = open("parimpar2.out", "w")

    i, p = map(int, fin.readline().split())
    nums = [int(x) for x in fin.readline().split()]
    if validare(i, p, nums):
        print("Date de intrare valide")
        parimpar(i, p, nums)