Informatică, întrebare adresată de laurstefan2002, 8 ani în urmă

Problema #1884 uemm1 de pe pbinfo in c++ va rog:
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 ≤ 100000
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

Răspunsuri la întrebare

Răspuns de mocanualexandrp2ikb6
0

#include <iostream>

using namespace std;

int n,i,j,v[100001],st[3][100001];

bool ok;

int main()

{

   cin>>n;

   for(i=1;i<=n;i++)

   {

       cin>>v[i];

       while(v[i]>st[1][j]&&j>=1&&i>1)

       {

           v[st[2][j]]=v[i];

           j--;

       }

       j++;

       st[1][j]=v[i];

       st[2][j]=i;

   }

   

   for(i=1;i<=j;i++)

       v[st[2][i]]=-1;

   for(i=1;i<=n;i++)

       cout<<v[i]<<" ";

   return 0;

}

Alte întrebări interesante