#define make_pair mp
#define emplace_back pb
#include <bits/stdc++.h>
using namespace std;
mt19937 mt_rand(time(0));
const int N = 5e4+5;
int n;
int tab[N], dp[N];
int main()
{
scanf("%d", &n);
for(int i=1;i<=n;i++) scanf("%d", &tab[i]);
for(int i=2;i<=n;i++) {
if((i % 2 == 0 && tab[i] <= tab[i-1]) || (i % 2 == 1 && tab[i] >= tab[i-1])) dp[i] = 1 + dp[i-2];
else dp[i] = dp[i-1];
}
int res = dp[n];
for(int i=2;i<=n;i++) {
if((i % 2 == 0 && tab[i] >= tab[i-1]) || (i % 2 == 1 && tab[i] <= tab[i-1])) dp[i] = 1 + dp[i-2];
else dp[i] = dp[i-1];
}
res = min(res, dp[n]);
printf("%d\n", res);
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 | #define make_pair mp #define emplace_back pb #include <bits/stdc++.h> using namespace std; mt19937 mt_rand(time(0)); const int N = 5e4+5; int n; int tab[N], dp[N]; int main() { scanf("%d", &n); for(int i=1;i<=n;i++) scanf("%d", &tab[i]); for(int i=2;i<=n;i++) { if((i % 2 == 0 && tab[i] <= tab[i-1]) || (i % 2 == 1 && tab[i] >= tab[i-1])) dp[i] = 1 + dp[i-2]; else dp[i] = dp[i-1]; } int res = dp[n]; for(int i=2;i<=n;i++) { if((i % 2 == 0 && tab[i] >= tab[i-1]) || (i % 2 == 1 && tab[i] <= tab[i-1])) dp[i] = 1 + dp[i-2]; else dp[i] = dp[i-1]; } res = min(res, dp[n]); printf("%d\n", res); return 0; } |
English