#include "bits/stdc++.h"
using namespace std;
template<typename _T> void _debug(const char *s, _T x){ cerr << s << " = " << x << "\n";}
template<typename _T, typename... R> void _debug(const char *s, _T x, R... r){ while(*s != ',') cerr << *s++; cerr << " = " << x << ", "; _debug(s + 1, r...);}
#define debug(...) _debug(#__VA_ARGS__, __VA_ARGS__);
#define sz(s) int32_t(s.size())
using ll = long long;
using ld = long double;
#define int ll
const int INF = 1e6;
int32_t main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n; cin >> n;
vector < int > arr(n), brr(n), crr(n);
for(int i = 0; i < n; i++){
cin >> arr[i];
crr[i] = brr[i] = arr[i];
}
int ans = INF; // 0 -> ma roscnąć, 1 -> ma maleć
for(int i = 1; i < n; i++){
if(i % 2 == 0){
if(brr[i - 1] >= brr[i]) brr[i] = +INF;
if(crr[i - 1] <= crr[i]) crr[i] = -INF;
}
if(i % 2 == 1){
if(brr[i - 1] <= brr[i]) brr[i] = -INF;
if(crr[i - 1] >= crr[i]) crr[i] = +INF;
}
}
int cnt_b = 0, cnt_c = 0;
for(int i = 1; i < n; i++){
if(i % 2 == 0){
if(brr[i - 1] >= brr[i]) cnt_b = INF;
if(crr[i - 1] <= crr[i]) cnt_c = INF;
}
if(i % 2 == 1){
if(brr[i - 1] <= brr[i]) cnt_b = INF;
if(crr[i - 1] >= crr[i]) cnt_c = INF;
}
if(arr[i] != brr[i]) cnt_b++;
if(arr[i] != crr[i]) cnt_c++;
}
ans = min(cnt_b, cnt_c);
cout << ans << "\n";
}
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 | #include "bits/stdc++.h" using namespace std; template<typename _T> void _debug(const char *s, _T x){ cerr << s << " = " << x << "\n";} template<typename _T, typename... R> void _debug(const char *s, _T x, R... r){ while(*s != ',') cerr << *s++; cerr << " = " << x << ", "; _debug(s + 1, r...);} #define debug(...) _debug(#__VA_ARGS__, __VA_ARGS__); #define sz(s) int32_t(s.size()) using ll = long long; using ld = long double; #define int ll const int INF = 1e6; int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector < int > arr(n), brr(n), crr(n); for(int i = 0; i < n; i++){ cin >> arr[i]; crr[i] = brr[i] = arr[i]; } int ans = INF; // 0 -> ma roscnąć, 1 -> ma maleć for(int i = 1; i < n; i++){ if(i % 2 == 0){ if(brr[i - 1] >= brr[i]) brr[i] = +INF; if(crr[i - 1] <= crr[i]) crr[i] = -INF; } if(i % 2 == 1){ if(brr[i - 1] <= brr[i]) brr[i] = -INF; if(crr[i - 1] >= crr[i]) crr[i] = +INF; } } int cnt_b = 0, cnt_c = 0; for(int i = 1; i < n; i++){ if(i % 2 == 0){ if(brr[i - 1] >= brr[i]) cnt_b = INF; if(crr[i - 1] <= crr[i]) cnt_c = INF; } if(i % 2 == 1){ if(brr[i - 1] <= brr[i]) cnt_b = INF; if(crr[i - 1] >= crr[i]) cnt_c = INF; } if(arr[i] != brr[i]) cnt_b++; if(arr[i] != crr[i]) cnt_c++; } ans = min(cnt_b, cnt_c); cout << ans << "\n"; } |
English