fbpx

Problema #1152 – VerificareOrdonatDivImp – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescă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 DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar.

Restricţii şi precizări

  • 1 ≤ n ≤ 500
  • fiecare element al vectorului va avea cel mult patru cifre

Exemplu

Date de intrare

7
4 5 7 9 9 10 12 

Date de ieșire

DA
#include <bits/stdc++.h>
using namespace std;

int ordonat(int a[], int st, int dr){
    if(st == dr)
        return 1;
    else{
        int mij = (st + dr) / 2;
        int a1 = ordonat(a, st, mij);
        int a2 = ordonat(a, mij + 1, dr);
        if(a1 == a2 && a[mij] <= a[mij + 1])
            return 1;
        else
            return 0;
    }
}

int main()
{
    int n, a[501];
    cin >> n;
    for(int i = 1; i <= n; ++i)
        cin >> a[i];

    if(ordonat(a, 1, n))
        cout << "DA";
    else
        cout << "NU";

    return 0;
}
Comentarii

S-ar putea sa iti placa