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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>

#define TOP 1000000
#define BOT -1000000

int main()
{
    int n, x;
    int last1 = BOT - 1, last2 = TOP + 1;
    bool up1 = true, up2 = false;
    int res1 = 0, res2 = 0;
    std::cin >> n;
    while (n--)
    {
        std::cin >> x;

        if (up1)
        {
            if (x <= last1)
            {
                res1++;
                // std::cout << "1_up: " << last1 << ' ' << x << std::endl;
                last1 = TOP;
            }
            else
            {
                last1 = x;
            }
        }
        else
        {
            if (last1 <= x)
            {
                res1++;
                // std::cout << "1_dn: " << last1 << ' ' << x << std::endl;
                last1 = BOT;
            }
            else
            {
                last1 = x;
            }
        }

        if (up2)
        {
            if (x <= last2)
            {
                res2++;
                // std::cout << "2_up: " << last2 << ' ' << x << std::endl;
                last2 = TOP;
            }
            else
            {
                last2 = x;
            }
        }
        else
        {
            if (last2 <= x)
            {
                res2++;
                // std::cout << "2_down: " << last2 << ' ' << x << std::endl;
                last2 = BOT;
            }
            else
            {
                last2 = x;
            }
        }

        // std::cout << "LAST: " << last1 << ' ' << last2 << std::endl;

        up1 = !up1;
        up2 = !up2;
    }
    // std::cout << res1 << ':' << res2 << std::endl;
    std::cout << std::min(res1, res2);
}