353
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