287
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
Exemplu
Intrare
5 3 4 3 5 1
Ieșire
4 5 5 -1 -1
#include <bits/stdc++.h> using namespace std; int p[3][100001]; int v[100001]; int main() { int n; cin >> n; int j = 0; for(int i = 1 ; i <= n ; ++i) { cin >> v[i]; while(v[i] > p[1][j] && i > 1 && j >= 1) { v[p[2][j]]=v[i]; j--; } j++; p[1][j] = v[i]; p[2][j] = i; } for(int i = 1 ; i <= j ; ++i) v[p[2][i]]=-1; for(int i = 1 ; i <= n ; ++i) cout << v[i] << ' '; return 0; }
Comentarii