#include <bits/stdc++.h> using namespace std; int n,a[50001]; int odp[50001][2][2]; //rosn, mal, zost,zmien int main() { scanf("%d",&n); scanf("%d",&a[0]); odp[0][0][1]=1; odp[0][1][1]=1; for(int i=1;i<n;++i) { scanf("%d",&a[i]); odp[i][0][1]=min(odp[i-1][0][1],odp[i-1][0][0])+1; odp[i][1][1]=min(odp[i-1][1][1],odp[i-1][1][0])+1; odp[i][0][0]=odp[i-1][0][1]; odp[i][1][0]=odp[i-1][1][1]; if((i&1)==1) { if(a[i]>a[i-1]) odp[i][0][0]=min(odp[i][0][0],odp[i-1][0][0]); else if(a[i]<a[i-1]) odp[i][1][0]=min(odp[i][1][0],odp[i-1][1][0]); } else { if(a[i]<a[i-1]) odp[i][0][0]=min(odp[i][0][0],odp[i-1][0][0]); else if(a[i]>a[i-1]) odp[i][1][0]=min(odp[i][1][0],odp[i-1][1][0]); } } printf("%d",min(min(odp[n-1][0][0],odp[n-1][0][1]),min(odp[n-1][1][0],odp[n-1][1][1]))); 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 | #include <bits/stdc++.h> using namespace std; int n,a[50001]; int odp[50001][2][2]; //rosn, mal, zost,zmien int main() { scanf("%d",&n); scanf("%d",&a[0]); odp[0][0][1]=1; odp[0][1][1]=1; for(int i=1;i<n;++i) { scanf("%d",&a[i]); odp[i][0][1]=min(odp[i-1][0][1],odp[i-1][0][0])+1; odp[i][1][1]=min(odp[i-1][1][1],odp[i-1][1][0])+1; odp[i][0][0]=odp[i-1][0][1]; odp[i][1][0]=odp[i-1][1][1]; if((i&1)==1) { if(a[i]>a[i-1]) odp[i][0][0]=min(odp[i][0][0],odp[i-1][0][0]); else if(a[i]<a[i-1]) odp[i][1][0]=min(odp[i][1][0],odp[i-1][1][0]); } else { if(a[i]<a[i-1]) odp[i][0][0]=min(odp[i][0][0],odp[i-1][0][0]); else if(a[i]>a[i-1]) odp[i][1][0]=min(odp[i][1][0],odp[i-1][1][0]); } } printf("%d",min(min(odp[n-1][0][0],odp[n-1][0][1]),min(odp[n-1][1][0],odp[n-1][1][1]))); return 0; } |