# PBinfo #1326 – sir_vale – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Un şir se numeşte şir vale, dacă are un singur minim pe poziţia v şi respectă următoarele proprietăţi:

În stânga şi în dreapta minimului există cel puţin câte un element.
Secvenţa a[1], a[2], ... , a[v] este strict descrescătoare.
Secvenţa a[v], a[v+1], ... , a[n] este strict crescătoare.


Se citeşte un şir cu n elemente. Să se verifice dacă este şir vale. 

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 vale 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
4 3 2 1 2
Ieșire

DA
Explicație
Primul exemplu NU este şir vale, pe când al doilea exemplu este şir vale.

## Cod sursă C++

```cpp
#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 vale
            return 0;
        }
        else
            if (a[i]<a[i+1])
                if (de)
                    cr=true;  // am gasit elemente crescatoare se accepta numai daca avem deja parte descrescatoare
                else
                {
                    cout<<"NU";// elemente crescatoare si nu a fost parte descrescatoare
                    return 0;  // nu poate fi vale
                }
            else
                if (a[i]>a[i+1])
                    if (!cr)
                        de=true;   // am gasit elemente descrescatoare
                    else
                    {
                        cout<<"NU";// elemente descrescatoare dupa parte crescatoare
                        return 0;  // nu poate fi vale
                    }
    if (cr and de)
        cout<<"DA";  // sirul contine atat parte crescatoare cat si descrescatoare
    else
        cout<<"NU";  // nu are parte crescatoare
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1326)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1326/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1326/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
