#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e4 + 99;
const int INF = 1e9;
int n;
int t[MAXN],g[MAXN];
int sum[2],p;
int sgn(int a){
return (a > 0) - (0 > a);
}
int main(){
cin >> n;
sum[0] = sum[1] = 0;
for(int i = 0; i < n; i++)
cin >> t[i];
for(int i = 0; i < n; i++)
g[i] = t[i];
p = 1;
for(int i = 0; i < n - 1; i++){
if(sgn(g[i] - g[i + 1]) != p){
g[i + 1] = (-1) * p * INF;
sum[0]++;
}
p *= (-1);
}
for(int i = 0; i < n; i++)
g[i] = t[i];
p = -1;
for(int i = 0; i < n - 1; i++){
if(sgn(g[i] - g[i + 1]) != p){
g[i + 1] = (-1) * p * INF;
sum[1]++;
}
p *= (-1);
}
cout << min(sum[0], sum[1]);
}
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 | #include <bits/stdc++.h> using namespace std; const int MAXN = 5e4 + 99; const int INF = 1e9; int n; int t[MAXN],g[MAXN]; int sum[2],p; int sgn(int a){ return (a > 0) - (0 > a); } int main(){ cin >> n; sum[0] = sum[1] = 0; for(int i = 0; i < n; i++) cin >> t[i]; for(int i = 0; i < n; i++) g[i] = t[i]; p = 1; for(int i = 0; i < n - 1; i++){ if(sgn(g[i] - g[i + 1]) != p){ g[i + 1] = (-1) * p * INF; sum[0]++; } p *= (-1); } for(int i = 0; i < n; i++) g[i] = t[i]; p = -1; for(int i = 0; i < n - 1; i++){ if(sgn(g[i] - g[i + 1]) != p){ g[i + 1] = (-1) * p * INF; sum[1]++; } p *= (-1); } cout << min(sum[0], sum[1]); } |
English