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
79
80
81
82
#include <iostream>
#include <vector>

using namespace std;

int changedNumber(int first, int second);

int main()
{
    size_t soundLength;
    cin >> soundLength;

    vector<int> sounds;
    int singleSound = 0;
    
    for (size_t i = 0; i < soundLength; ++i)
    {
        cin >> singleSound;
        sounds.push_back(singleSound);
    }

    vector<short> trends;

    for (size_t i = 1; i < sounds.size(); ++i)
    {
        if (sounds[i] > sounds[i-1])
        {
            trends.push_back(1);
        }
        else if (sounds[i] < sounds[i-1])
        {
            trends.push_back(-1);
        }
        else
        {
            trends.push_back(0);
        }
    }

    // for (auto sound : sounds)
    // {
    //     //cout << sound << " ";
    // }
    // cout << endl;
    // for (auto trend : trends)
    // {
    //     //cout << trend << " ";
    // }
    //cout << endl;

    int result = 0;
    for (size_t i = 0; i < trends.size() - 1; ++i)
    {
        short currentTrend = trends[i];
        short nextTrend = trends[i+1];
        //cout << currentTrend << " "; 
        if (nextTrend == 0)
        {
            //cout << "current trend = " << currentTrend << endl;
            result++;
            trends[i+1] = currentTrend * -1;
            trends[i+2] = trends[i+2] * -1;
            //cout << "te same ";
        }
        else if (currentTrend + nextTrend != 0)
        {
            result++;
            trends[i+1] *= -1;// currentTrend * -1;
          //  trends[i+2] = trends[i+2] * -1;
            ++i;
            //cout << "monotonny  ";
        }
        else
        {
            //cout << "ok ";
        }
    }
   
    cout << result;

    return 0;
}