0240 - Max N

De la Universitas MediaWiki

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

#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)