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
#include <bits/stdc++.h>

using namespace std;

int n;
const long long max_val = 1000000000;
const long long min_val = -1000000000;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n;
    int result1 = 0;
    int result2 = 0;
    int prev1 = 0;
    int prev2 = 0;
    bool flag1 = 1; // 0 - up, 1 - down
    bool flag2 = 0; // 0 - up, 1 - down
    bool flag3 = true;
    bool flag4 = true;
    cin >> prev1;
    prev2 = prev1;
    for(int i=1; i<n; i++){
        int a;
        cin >> a;
        if(!flag1 && a <= prev1){
             result1++, prev1 = max_val, flag3 = false;
            //  cout << i << " 1.1" << endl;
        }
        else if(flag1 && a >= prev1) {
            result1++, prev1 = min_val, flag3 = false;
            // cout << i << " 1.2" << endl;
        }
        if(!flag2 && a <= prev2) {
            result2++, prev2 = max_val, flag4 = false;
            // cout << i << " 2.1" << endl;
        }
        else if(flag2 && a >= prev2) {
            result2++, prev2 = min_val, flag4 = false;
            // cout << i << " 2.2" << endl;
        }
        flag1 = !flag1;
        flag2 = !flag2;
        if(flag3) prev1 = a;
        if(flag4) prev2 = a;
        flag3 = true;
        flag4 = true;
    }

    // cout << result1 << " " << result2 << endl;
    cout << min(result1, result2) << endl;

    return 0;
}