Informatică, întrebare adresată de mirelavoicu31, 9 ani în urmă

Cerința
Un şir se numeşte şir munte, dacă are un singur maxim pe poziţia v, numit vârf şi respectă următoarele proprietăţi:

În stânga şi în dreapta vârfului există cel puţin câte un element.
Secvenţa a[1], a[2], ... , a[v] este strict crescătoare.
Secvenţa a[v], a[v+1], ... , a[n] este strict descrescătoare.
Se citeşe un şir cu n elemente. Să se verifice dacă este şir munte.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire
Programul va afișa pe ecran unul dintre mesajele DA sau NU în funcţie că este şir munte sau nu.

Restricții și precizări
3 ≤ n ≤ 1000
0 ≤ elementele şirului ≤ 1 000 000 000
Exemplu 1:
Intrare

5
1 2 3 4 5
Ieșire

NU
Exemplu 2:
Intrare

5
1 2 3 4 3
Ieșire

DA
Explicație
Primul exemplu nu este şir munte, pe când al doilea exemplu este şir munte.
prb 1321 pbinfo plsss

Răspunsuri la întrebare

Răspuns de ap53
4
#include <iostream>

using namespace std;

int main()
{
    int a[1001],n,i;
    bool cr,de;
    cin>>n;
    for(i=0;i<n;++i)
        cin>>a[i];

    cr=de=false;
    for(i=0;i<n-1;++i)
        if (a[i]==a[i+1])
        {
            cout<<"NU";   //  daca gasim doua elementele egale, nu poate fi munte
            return 0;
        }
        else
            if (a[i]>a[i+1])
                if (cr)
                    de=true;  // am gasit elemente descrescatoare
                else
                {
                    cout<<"NU";// elemente descrescatoare si nu a fost parte crescatoare
                    return 0;  // nu poate fi munte
                }
            else
                if (a[i]<a[i+1])
                    if (!de)
                        cr=true;   // am gasit elemente crescatoare
                    else
                    {
                        cout<<"NU";// elemente crescatoare dupa parte descrescatoare
                        return 0;  // nu poate fi munte
                    }
    if (cr and de)
        cout<<"DA";  // sirul contine atat parte crescatoare cat si descrescatoare
    else
        cout<<"NU";  // nu are parte descrescatoare
    return 0;
}
Alte întrebări interesante