0240 - Max N

From Bitnami MediaWiki
Revision as of 14:04, 30 April 2023 by Ardelean Alexandru (talk | contribs) (Pagină nouă: ==Cerința== Se dă un şir cu <code>n</code> numere naturale. Să se determine un alt şir de numere, cu proprietatea că valoarea elementului de pe poziţia <code>i</code> (<code>1≤i≤n</code>) din acest şir este egală cu cea mai mare dintre valorile primelor <code>i</code> elemente din primul şir. ==Date de intrare== Fişierul de intrare <code>maxn.in</code> conţine pe prima linie numărul <code>n</code>, iar pe a următoarele linii <code>n</code> numere naturale s...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 1 ≤ n ≤ 100000
  • numerele de pe a doua linie a fişierului de intrare vor avea cel mult 9 cifre

Exemplu 1[edit | edit source]

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[edit | edit source]

Intrare
-10
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  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>