1504 - Comori 1: Difference between revisions
Paul Ungur (talk | contribs) Pagină nouă: Diriginta clasei a V-a organizează cu cei n elevi ai clasei sale concursul „Căutătorii de comori”. În concurs, fiecare elev trebuie să treacă prin n puncte de control și să răspundă la o întrebare la care primește un punctaj cuprins între 0 și 100. Mihai, elev în clasa a V-a, participă cu mare plăcere la concurs și își notează punctajele obținute la fiecare punct de control. ==Cerința== Să se specifice numerele de ordine ale punctelor de control l... |
Paul Ungur (talk | contribs) No edit summary |
||
Line 47: | Line 47: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | def validare(n, nums): | ||
if n < | if not (1 <= n <= 1_000): | ||
return False | |||
if not all(0 <= nums <= 100 for nums in nums): | |||
if | return False | ||
return True | |||
def | def comori(n, a): | ||
cnt = 0 | |||
for i in range(n-1): | |||
if a[i] > a[i+1]: | |||
for i in range(1 | cnt += 1 | ||
if | fout.write(f"{i+2} ") | ||
if cnt == 0: | |||
fout.write("0 ") | |||
if | |||
== | if __name__ == '__main__': | ||
fin = open("comori1.in") | |||
fout = open("comori1.out", "w") | |||
n = int(fin.readline().strip()) | |||
nums = list(map(int, fin.readline().split())) | |||
if validare(n, nums): | |||
print("Date de intrare valide") | |||
comori(n, nums) | |||
else: | |||
print("Date de intrare invalide") | |||
fin.close() | |||
fout.close() | |||
</syntaxhighlight> |
Revision as of 16:20, 26 April 2023
Diriginta clasei a V-a organizează cu cei n elevi ai clasei sale concursul „Căutătorii de comori”. În concurs, fiecare elev trebuie să treacă prin n puncte de control și să răspundă la o întrebare la care primește un punctaj cuprins între 0 și 100. Mihai, elev în clasa a V-a, participă cu mare plăcere la concurs și își notează punctajele obținute la fiecare punct de control.
Cerința
Să se specifice numerele de ordine ale punctelor de control la care Mihai a obținut un punctaj mai mic decât cel obținut la punctul de control anterior. Dacă punctajele obținute de Mihai au fost în ordine crescătoare, se va afișa valoarea 0.
Date de intrare
Fișierul de intrare comori1.in conține: pe prima linie, un număr natural n reprezentând numărul punctelor de control, pe a doua linie, un șir format din n numere naturale reprezentând punctajele lui Mihai la fiecare punct de control, separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire comori1.out va conține numerele de ordine ale punctele de control la care Mihai a obținut un punctaj mai mic decât cel obținut la punctul de control anterior sau valoarea 0 dacă punctajele obținute de Mihai au fost în ordine crescătoare.
Restricții și precizări
1 ≤ n ≤ 1000 Numerele din şir nu depăşesc 100.
Exemplul 1
comori1.in
6 50 60 65 70 70 80
comori1.out
0
Explicație
Mihai realizează la cele 6 puncte de control punctajele 50 ≤ 60 ≤ 65 ≤ 70 ≤ 70 ≤ 80 Pentru că punctajele au fost în ordine crescătoare afișăm 0.
Exemplul 2
comori1.in 9 66 70 20 35 50 34 69 80 12
comori1.out 3 6 9
Explicație
La punctul de control 3 Mihai are punctajul 20 ≤ 70; La punctul de control 6 Mihai are punctajul 34 ≤ 50; La punctul de control 9 Mihai are punctajul 12 ≤ 80.
Rezolvare
<syntaxhighlight lang="python" line> def validare(n, nums):
if not (1 <= n <= 1_000): return False if not all(0 <= nums <= 100 for nums in nums): return False return True
def comori(n, a):
cnt = 0 for i in range(n-1): if a[i] > a[i+1]: cnt += 1 fout.write(f"{i+2} ") if cnt == 0: fout.write("0 ")
if __name__ == '__main__':
fin = open("comori1.in") fout = open("comori1.out", "w")
n = int(fin.readline().strip()) nums = list(map(int, fin.readline().split())) if validare(n, nums): print("Date de intrare valide") comori(n, nums) else: print("Date de intrare invalide")
fin.close() fout.close()
</syntaxhighlight>