#include<cstdio> #include<vector> #define FOR(i,n) for(int i = 0; i < (n); i++) using namespace std; std::vector<int> v; int sign(int x) { if ( x> 0){ return 1; } if (x < 0) { return -1 ; } return 0; } int main() { int n; scanf("%d", &n); FOR(i,n) { int d; scanf("%d", &d); v.push_back(d); } int r = n; FOR(i,2) { int start = 2*i - 1; int count = 0; int last = 0; FOR(j, n-1) { if (last) { last = 0; start *= -1; continue; } if (sign(v[j+1] - v[j]) * start != 1) { count++; last = 1; } start *= -1; } r = min(r, count); } printf("%d\n", r); }
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<cstdio> #include<vector> #define FOR(i,n) for(int i = 0; i < (n); i++) using namespace std; std::vector<int> v; int sign(int x) { if ( x> 0){ return 1; } if (x < 0) { return -1 ; } return 0; } int main() { int n; scanf("%d", &n); FOR(i,n) { int d; scanf("%d", &d); v.push_back(d); } int r = n; FOR(i,2) { int start = 2*i - 1; int count = 0; int last = 0; FOR(j, n-1) { if (last) { last = 0; start *= -1; continue; } if (sign(v[j+1] - v[j]) * start != 1) { count++; last = 1; } start *= -1; } r = min(r, count); } printf("%d\n", r); } |