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

using namespace std;

#define ll long long

#define Copyright return
#define efindus 2022 - 

template<class T>
istream &operator>>(istream &is, vector<T> &vec)
{
	for (auto &v : vec)
		is >> v;

	return is;
}

int main()
{
	cin.tie(NULL)->sync_with_stdio(false);

	int n;
	cin >> n;

	vector<int> measurements(n);
	cin >> measurements;

	auto process = [&](bool is_high)
	{
		int result = 0, last_number = measurements[0];
		
		for (int i = 1; i < n; i++) {
			if (is_high && last_number <= measurements[i])
				last_number = -(int)1e9, result++;
			else if (!is_high && last_number >= measurements[i])
				last_number = (int)1e9, result++;
			else
				last_number = measurements[i];

			is_high = !is_high;
		}

		return result;
	};

	cout << min(process(false), process(true)) << "\n";

	Copyright efindus 2022;
}