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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//~ while (clock()<=69*CLOCKS_PER_SEC)
//~ #pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("O3")
//~ #pragma GCC optimize("Ofast")
//~ #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//~ #pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>

using namespace std;

using ll=long long;
using ld=long double;
using pii=pair<int, int>;
using pll=pair<ll, ll>;
using vi=vector<int>;
using vll=vector<ll>;

template<class TH> void _dbg(const char *sdbg, TH h){ cerr<<sdbg<<" = "<<h<<endl; }
#ifdef LOCAL
#define _upgrade ios_base::sync_with_stdio(0);
#define debug(...) _dbg(#__VA_ARGS__, __VA_ARGS__);
#else
#define _upgrade ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define debug(...) 98;
#define cerr if(0) cout
#endif

#define pb push_back
#define mp make_pair
#define all(x) x.begin(),x.end()
#define sz(x) ((int)(x).size())
#define fi first
#define se second

#define erase_duplicates(x) sort(all(x)), (x).resize(distance((x).begin(), unique(all(x))));

#define watch(x) cout << (#x) << " is " << (x) << endl;

#define pow2(x) ((x)*(x))
#define mod(x, m) ((((x) % (m)) + (m)) % (m))
#define max3(a, b, c) max(a, max(b, c))
#define min3(a, b, c) min(a, min(b, c))

#define REP(i, a, b) for(int i = a; i <= b; ++i)
#define REPV(i, b, a) for(int i = b; i >= a; --i)

const double m_pi = acos(-1.0);
const int int_max = 0x3f3f3f3f;
const int M7 = 1000*1000*1000+7;
const int M9 = 1000*1000*1000+9;

int tab[50'000];
int deltas[50'000];

int main(){
    _upgrade
    mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
    cout<<fixed<<setprecision(15);
    
    int n;cin>>n;

    REP(i,0,n-1) {
        cin>>tab[i];
    }
    REP(i,0,n-2) {
        deltas[i] = tab[i] - tab[i+1];
        if(i%2==1)deltas[i]*=-1;
    }
    int wynik1 = 0;
    int wynik2 = 0;
    REP(i,0,n-2) {
        if(deltas[i] <= 0) {
            ++wynik1;
            ++i;
        }
    }
    REP(i,0,n-2) {
        if(deltas[i] >= 0) {
            ++wynik2;
            ++i;
        }
    }
    cout << min(wynik1, wynik2)<<"\n";

    return 0;
}




/*
    __builtin_popcount count total set bits on a given integer
    (use __builtin_popcountll for long long).


*/