fbpx

Problema #1884 – UEMM1 – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa