3236 - Par Impar 2

From Bitnami MediaWiki
Revision as of 16:17, 26 April 2023 by Paul Ungur (talk | contribs)

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.

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

<syntaxhighlight lang="python" line> 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)

</syntaxhighlight>