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