#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]); } |