#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; } |
English