# PBinfo #1329 – sir-zigzag – Rezolvare C++

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

## Enunț

Cerința
Un şir se numeşte şir zigzag, dacă monotonia elementelor pe poziții succesive alternează între strict crescător și strict descrescător, adică a[1]>a[2]<a[3]>a[4] ... sau a[1]<a[2]>a[3]<a[4]....

Se citeşe un şir cu n elemente. Să se verifice dacă este şir zigzag. 

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

Date de ieșire
Programul va afișa pe ecran unul dintre mesajele DA sau NU după cum șirul dat este şir zigzag sau nu.

Restricții și precizări

3 ≤ n ≤ 1000
0 ≤ elementele şirului ≤ 1 000 000 000

Exemplu 1:
Intrare

5
1 5 3 7 5
Ieșire

DA
Explicație
Avem relațiile 1 < 5 > 3 < 7 > 5, deci e vorba de un șir zigzag.

Exemplu 2:
Intrare

5
4 3 5 1 2
Ieșire

DA
Explicație
Avem relațiile 4 > 3 < 5 > 1 < 2, deci e vorba de un șir zigzag.

Exemplu 3:
Intrare

5
4 3 2 1 2
Ieșire

NU
Explicație
Primele trei elemente ale șirului nu își schimbă monotonia, deci nu e șir zigzag.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main() {
    int n, v[1001];
    cin >> n;
    bool adv = true;
    cin >> v[1];
    cin >> v[2];
    if (v[2] == v[1]) adv = 0;
    for (int i = 3; i <= n; i++) {
        cin >> v[i];
        if (v[i] == v[i - 1]) adv = 0;
        if (!((v[i] < v[i - 1]) != (v[i - 1] < v[i - 2]))) adv = false;
    } if (adv) cout << "DA";
    else cout << "NU";
    return 0;
}
```

## Resurse

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