# PBinfo #4261 – AlternDivImp – Rezolvare C++

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

## Enunț

Cerința
Folosind metoda Divide et Impera, scrieți funcția recursivă cu antetul

int AlternDivImp(int a[], int st, int dr)
care primind ca parametri un vector a de numere naturale și două numere întregi st și dr, returnează 1 dacă în secvența a[st], a[st+1], ..., a[dr] numerele impare alternează cu cele pare, sau returnează 0 dacă există cel puțin două numere alăturate de aceeași paritate.

Restricții și precizări

st ≤ dr
Numele funcției este AlternDivImp.
Vectorul a este indexat de la 1
Se recomandă utilizarea metodei Divide et Impera în rezolvarea problemei.

Exemplu:
Dacă a = (1,2,3,4,5,6,7,8,9,11), atunci AlternDivImp(a, 1, 10) = 0, deoarece numerele 9 și 11 aflate pe poziții alăturate au aceeași paritate. De asemenea, AlternDivImp(a, 1, 8) = 1.

Important
Soluția propusă va conține doar funcția cerută. Introducerea în soluție a altor instrucțiuni poate duce la erori de compilare sau de execuție, care vor duce la depunctarea soluției.

## Cod sursă C++

```cpp
int AlternDivImp(int a[], int st, int dr)
{
    if (st > dr) return 1;
    if (st == dr) return 1;
    int m = (st + dr) / 2;
    return AlternDivImp(a, st, m) && AlternDivImp(a, m + 1, dr)
           && (a[m] % 2 != a[m + 1] % 2);
}
```

## Resurse

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