#include <bits/stdc++.h>
#define ll long long
#define fors(u, n, s) for(ll u=(s); u < (n); u++)
#define foru(u, n) fors(u, n, 0)
#define ir(a, b, x) (((a) <= (x)) && ((x) <= (b)))
using namespace std;
#define N 50050
int n;
int arr[N];
bool wrong[N];
int get_ans(){
int ans = 0;
foru(i, n-1){
if(i&1) wrong[i] = (arr[i]>=arr[i+1]);
else wrong[i] = (arr[i]<=arr[i+1]);
}
foru(i, n-1){
if(wrong[i]){
ans++;
wrong[i]=false;
wrong[i+1]=false;
}
}
return ans;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
foru(i, n) cin >> arr[i];
int ans1 = get_ans();
foru(i, n) arr[i]*=-1;
int ans2 = get_ans();
cout << min(ans1, ans2);
return 0;
}
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 | #include <bits/stdc++.h> #define ll long long #define fors(u, n, s) for(ll u=(s); u < (n); u++) #define foru(u, n) fors(u, n, 0) #define ir(a, b, x) (((a) <= (x)) && ((x) <= (b))) using namespace std; #define N 50050 int n; int arr[N]; bool wrong[N]; int get_ans(){ int ans = 0; foru(i, n-1){ if(i&1) wrong[i] = (arr[i]>=arr[i+1]); else wrong[i] = (arr[i]<=arr[i+1]); } foru(i, n-1){ if(wrong[i]){ ans++; wrong[i]=false; wrong[i+1]=false; } } return ans; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; foru(i, n) cin >> arr[i]; int ans1 = get_ans(); foru(i, n) arr[i]*=-1; int ans2 = get_ans(); cout << min(ans1, ans2); return 0; } |
English