0240 - Max N
Cerința
Se dă un şir cu n
numere naturale. Să se determine un alt şir de numere, cu proprietatea că valoarea elementului de pe poziţia i
(1≤i≤n
) din acest şir este egală cu cea mai mare dintre valorile primelor i
elemente din primul şir.
Date de intrare
Fişierul de intrare maxn.in
conţine pe prima linie numărul n
, iar pe a următoarele linii n
numere naturale separate prin spaţii.
Date de ieșire
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
Pe următoarea linie se vor afișa n numere, separate prin câte un spaţiu, reprezentând elementele şirului determinat.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări
1 ≤ n ≤ 100000
- numerele de pe a doua linie a fişierului de intrare vor avea cel mult
9
cifre
Exemplu 1
- Intrare
- 12
- 4 6 3 7 8 1 6 2 7 9 10 8
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 4 6 6 7 8 8 8 8 8 9 10 10
Exemplu 2
- Intrare
- -10
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line="1">
- 0240 - Max N
def conditii(n, numere):
return len(numere) == n and \ 1 <= n <= 100_000 and \ all(nr <= 999_999_999 for nr in numere)
def max_n(numere):
rezultat = []
# Incepand cu primul element pana la ultimul... for i in range(len(numere)): # ...adaugam in rezultat maximul dintre primele i+1 elemente rezultat.append(max(numere[:i + 1]))
print(" ".join([str(x) for x in rezultat]))
if __name__ == "__main__":
n = int(input()) numere = [int(x) for x in input().split()] if not conditii(n, numere): print("Datele de intrare nu corespund restricțiilor impuse.") else: print("Datele de intrare corespund restricțiilor impuse.") max_n(numere)
</syntaxhighlight>