1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>

using namespace std;

int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);

    int n;
    cin>>n;

    int *wysokosci = new int [n];

    for(int i=0; i<n; i++)
        cin>>wysokosci[i];

    int *zmiany = new int[n-1];

    for(int i=0; i<n-1; i++)
    {
        if(wysokosci[i+1]>wysokosci[i]) zmiany[i]=1;
        else if (wysokosci[i+1]<wysokosci[i]) zmiany[i]=-1;
        else zmiany[i]=0;
    }

    bool zmieniono = false;
    int ilosc_zmian1 = 0;
    int ilosc_zmian2 = 0;
    int poprzednia = -1;

    for(int i=0; i<n-1; i++)
    {
        if((zmiany[i]==poprzednia || zmiany[i]==0) && !zmieniono)
        {
            zmieniono=true;
            ilosc_zmian1++;
        }
        else zmieniono = false;

        poprzednia*=-1;
    }


    poprzednia = 1;
    zmieniono = false;

    for(int i=0; i<n-1; i++)
    {
        if((zmiany[i]==poprzednia || zmiany[i]==0) && !zmieniono)
        {
            zmieniono=true;
            ilosc_zmian2++;
        }
        else zmieniono = false;

        poprzednia *= -1;
    }

    if(ilosc_zmian1<ilosc_zmian2) cout<<ilosc_zmian1;
    else cout<<ilosc_zmian2;

    return 0;
}