fbpx

Problema #1329 – sir_zigzag – Rezolvari PBInfo

de Mihai-Alexandru

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.

#include <bits/stdc++.h>

using namespace std;
int n,ok,i;
int main()
{
    cin>>n;
    int a[n];
    for (i=0;i<n;i++)
    {
        cin>>a[i];
    }
    ok=1;
    for (i=0;i<n-2;i++)
    {
        if (a[i]<a[i+1])
        {
            if (a[i+1]<a[i+2])
                ok=0;
        }
        else
        {
            if (a[i]>a[i+1])
            {
                if (a[i+1]>a[i+2])
                    ok=0;
            }
        }
        if (a[i]==a[i+1])
            ok=0;
    }
    if (ok==0)
        cout<<"NU";
    else cout<<"DA";

    return 0;
}
Comentarii

S-ar putea sa iti placa