👤

AJUTOR!!
#1883
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 ≤ 1000
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ăspuns :

declari sirul A de 1000elemente de tipul long/longint
n,i,j declarat intreg
ok boolean


citesti n
pentru i=0 cat timp i<n ,i++(for de la 1 la n daca esti in pascal)
citeste a[i]

pentru i=0 pana i<n executa i++
{
ok=false
pentru j=i+1 pana la j<n executa j++
{
daca ok=false atunci
{
daca a[j]>a[i]
{
scrie a[j]
ok=true
}
}
}
daca ok=false
scrie -1

}

etc...

vreo preferinta de limbaj anume?
Ti-am facut eu o sursa in C++. Suuces!
#include <iostream>
using namespace std;
int n, i, j, k, v[1005], sol[1005], maxx;
int main()
{
    cin >> n;
    for(i = 1; i <= n; i ++)
        cin >> v[i];
    for(i = 1; i < n; i ++)
     {
        if(v[i] < v[i + 1]) sol[i] = v[i + 1];
         else
         {
            maxx = v[i];
            for(j = i + 1; j <= n; j ++)
            {
                if (v[j] > maxx)
                {
                    maxx = v[j];
                    break;
                }
            }
            if(maxx == v[i]) sol[i] = -1;
                        else sol[i] = maxx;
         }
     }
     sol[n] = -1;;
     for(i = 1; i <= n; i ++)
      cout << sol[i] << " ";
    return 0;
}