# PBinfo #4356 – OrdonatDivImp – Rezolvare C++

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

## Enunț

Cerinţa
Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate strict crescător sau strict descrescător.

Date de intrare
Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului.

Date de ieşire
Programul afișează pe ecran mesajul strict crescator, dacă vectorul are elementele ordonate strict crescător, mesajul strict descrescator, dacă vectorul are elementele ordonate strict descrescător, sau neordonat, în cazul în care vectorul nu este ordonat nici strict crescător și nici strict descrescător.

Restricţii şi precizări

1 ≤ n ≤ 1000
fiecare element al vectorului va avea cel mult patru cifre
se recomandă folosirea metodei Divide et Impera

Exemplu:
Date de intrare

7
4 5 7 8 9 10 12 
Date de ieșire

strict crescator

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int scresc(int A[], int st, int dr)
{
    if(st>=dr) return 1;
    else
    {
        int mij=(st+dr)/2;
        return scresc(A,st,mij) && scresc(A,mij+1,dr) && A[mij]<A[mij+1];
    }
}
int sdesc(int A[], int st, int dr)
{
    if(st>=dr) return 1;
    else
    {
        int mij=(st+dr)/2;
        return sdesc(A,st,mij) && sdesc(A,mij+1,dr) && A[mij]>A[mij+1];
    }
}
int main()
{
    int A[1001],n;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>A[i];
    if(scresc(A,1,n)) cout<<"strict crescator";
    else if(sdesc(A,1,n)) cout<<"strict descrescator";
         else cout<<"neordonat";
    return 0;
}
```

## Resurse

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