#include<bits/stdc++.h>
using namespace std;
int tab[50005];
int f(int k, int n){
int w=0;
int k1=1;
if(k==1)k1=0;
for(int i=1;i<n;i++){
if(k==0){
if(tab[i]>=tab[i-1]){
w++;
//tab[i]=tab[i+1]-1;
i++;
swap(k1, k);
}
swap(k, k1);
//cout<<" 0 "<<w<<" "<<i<<" ";
continue;
}
if(k==1){
if(tab[i]<=tab[i-1]){
i++;
//tab[i]=tab[i+1]+1;
w++;
swap(k1, k);
}
//cout<<" 1 "<<w<<" "<<i<<" ";
swap(k1, k);
}
}
//cout<<"\n";
return w;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>tab[i];
}
int w=0;
int k=0;
cout<<min(f(0, n), f(1, n))<<"\n";
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 | #include<bits/stdc++.h> using namespace std; int tab[50005]; int f(int k, int n){ int w=0; int k1=1; if(k==1)k1=0; for(int i=1;i<n;i++){ if(k==0){ if(tab[i]>=tab[i-1]){ w++; //tab[i]=tab[i+1]-1; i++; swap(k1, k); } swap(k, k1); //cout<<" 0 "<<w<<" "<<i<<" "; continue; } if(k==1){ if(tab[i]<=tab[i-1]){ i++; //tab[i]=tab[i+1]+1; w++; swap(k1, k); } //cout<<" 1 "<<w<<" "<<i<<" "; swap(k1, k); } } //cout<<"\n"; return w; } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ cin>>tab[i]; } int w=0; int k=0; cout<<min(f(0, n), f(1, n))<<"\n"; return 0; } |
English