#include <bits/stdc++.h> using namespace std; int n; const long long max_val = 1000000000; const long long min_val = -1000000000; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; int result1 = 0; int result2 = 0; int prev1 = 0; int prev2 = 0; bool flag1 = 1; // 0 - up, 1 - down bool flag2 = 0; // 0 - up, 1 - down bool flag3 = true; bool flag4 = true; cin >> prev1; prev2 = prev1; for(int i=1; i<n; i++){ int a; cin >> a; if(!flag1 && a <= prev1){ result1++, prev1 = max_val, flag3 = false; // cout << i << " 1.1" << endl; } else if(flag1 && a >= prev1) { result1++, prev1 = min_val, flag3 = false; // cout << i << " 1.2" << endl; } if(!flag2 && a <= prev2) { result2++, prev2 = max_val, flag4 = false; // cout << i << " 2.1" << endl; } else if(flag2 && a >= prev2) { result2++, prev2 = min_val, flag4 = false; // cout << i << " 2.2" << endl; } flag1 = !flag1; flag2 = !flag2; if(flag3) prev1 = a; if(flag4) prev2 = a; flag3 = true; flag4 = true; } // cout << result1 << " " << result2 << endl; cout << min(result1, result2) << endl; 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 48 49 50 51 52 53 54 55 56 | #include <bits/stdc++.h> using namespace std; int n; const long long max_val = 1000000000; const long long min_val = -1000000000; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; int result1 = 0; int result2 = 0; int prev1 = 0; int prev2 = 0; bool flag1 = 1; // 0 - up, 1 - down bool flag2 = 0; // 0 - up, 1 - down bool flag3 = true; bool flag4 = true; cin >> prev1; prev2 = prev1; for(int i=1; i<n; i++){ int a; cin >> a; if(!flag1 && a <= prev1){ result1++, prev1 = max_val, flag3 = false; // cout << i << " 1.1" << endl; } else if(flag1 && a >= prev1) { result1++, prev1 = min_val, flag3 = false; // cout << i << " 1.2" << endl; } if(!flag2 && a <= prev2) { result2++, prev2 = max_val, flag4 = false; // cout << i << " 2.1" << endl; } else if(flag2 && a >= prev2) { result2++, prev2 = min_val, flag4 = false; // cout << i << " 2.2" << endl; } flag1 = !flag1; flag2 = !flag2; if(flag3) prev1 = a; if(flag4) prev2 = a; flag3 = true; flag4 = true; } // cout << result1 << " " << result2 << endl; cout << min(result1, result2) << endl; return 0; } |