3236 - Par Impar 2: Difference between revisions
Paul Ungur (talk | contribs) No edit summary |
Paul Ungur (talk | contribs) No edit summary |
||
Line 35: | Line 35: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | def validare(i, p, nums): | ||
if not (1 <= i <= 100000 and 1 <= p <= 100000): | if not (1 <= i <= 100000 and 1 <= p <= 100000): | ||
return False | return False | ||
Line 42: | Line 42: | ||
return True | return True | ||
def | 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: | |||
if | b -= 1 | ||
if b == 0: | |||
rez2 = x | |||
if | if a == 0 and b == 0: | ||
break | |||
if rez1 == 0 or rez2 == -1: | |||
fout.write("Nu Exista") | |||
else: | 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> |
Revision as of 16:17, 26 April 2023
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>