1884 - UEMM1
De la Universitas MediaWiki
Cerința
Se dă un șir cu n elemente, numere naturale. Să se afișeze, pentru fiecare element din șir, valoarea din șir aflată după acesta și mai mare decât acesta (Următorul Element Mai Mare). Dacă o asemenea valoare nu există, se va afișa -1.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.
Date de ieșire
Programul va afișa pe ecran cele n valori determinate, separate prin câte un spațiu.
Restricții și precizări
- 1 ≤ n ≤ 100.000
- elementele șirului vor fi mai mai mici decât 1.000.000
Exemplul 1:
- Intrare
5 3 4 3 5 1
- Ieșire
Datele de intrare corespund restrictiilor impuse. 4 5 5 -1 -1
Exemplul 2:
- Intrare
UEMM1
- Ieșire
Datele de intrare nu corespund restrictiilor impuse.
Rezolvare
def verificare_restrictii(numere): # functia de verificare a datelor de intrare
if 1 <= numere <= 100000:
return True
else:
return False
def urmatorul_element_mai_mare(numere, string):
# Inițializăm rezultatul cu -1 pentru toate elementele
rezultat = [-1] * numere
# Inițializăm o stivă goală pentru a păstra indicii elementelor
stiva = []
# Parcurgem fiecare element din șir
for i in range(numere):
# Cât timp stiva nu este goală și elementul curent este mai mare decât elementul din vârful stivei
while stiva and string[stiva[-1]] < string[i]:
# Actualizăm rezultatul pentru indicele din vârful stivei cu valoarea actuală din șir
rezultat[stiva.pop()] = string[i]
# Adăugăm indicele elementului curent în stivă
stiva.append(i)
# Returnăm rezultatul
return rezultat
if __name__ == '__main__':
try:
# Citim numărul de elemente
n = int(input("Introduceți numărul de elemente: "))
# Citim șirul de numere
sir = list(map(int, input("Introduceți elementele șirului, separate prin spațiu: ").split()))
if verificare_restrictii(n): # verificam datele de intrare
print("Datele de intrare corespund restrictiilor impuse.")
# Apelăm funcția și afișăm rezultatul
print(urmatorul_element_mai_mare(n, sir))
else:
print("Datele de intrare nu corespund restrictiilor impuse.")
# ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator
except ValueError:
print("Datele de intrare nu corespund restrictiilor impuse.")
except IndexError:
print("Datele de intrare nu corespund restrictiilor impuse.")