#include <bits/stdc++.h> using namespace std; const int N = 5e3+1; int a[N], dp[N][2], n; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); cin>>n; for (int i=1; i<=n; ++i) cin>>a[i]; int ans=1e9+2137+69+420; // start increasing memset(dp, 0, sizeof(dp)); dp[1][1]=1; for (int i=2; i<=n; ++i) { dp[i][0]=dp[i-1][1]; if (i&1) { if (a[i-1] > a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } else { if (a[i-1] < a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } } ans=min({ans, dp[n][0], dp[n][1]}); // start decreasing memset(dp, 0, sizeof(dp)); dp[1][1]=1; for (int i=2; i<=n; ++i) { dp[i][0]=dp[i-1][1]; if (i&1) { if (a[i-1] < a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } else { if (a[i-1] > a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } } ans=min({ans, dp[n][0], dp[n][1]}); 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 | #include <bits/stdc++.h> using namespace std; const int N = 5e3+1; int a[N], dp[N][2], n; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); cin>>n; for (int i=1; i<=n; ++i) cin>>a[i]; int ans=1e9+2137+69+420; // start increasing memset(dp, 0, sizeof(dp)); dp[1][1]=1; for (int i=2; i<=n; ++i) { dp[i][0]=dp[i-1][1]; if (i&1) { if (a[i-1] > a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } else { if (a[i-1] < a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } } ans=min({ans, dp[n][0], dp[n][1]}); // start decreasing memset(dp, 0, sizeof(dp)); dp[1][1]=1; for (int i=2; i<=n; ++i) { dp[i][0]=dp[i-1][1]; if (i&1) { if (a[i-1] < a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } else { if (a[i-1] > a[i]) dp[i][0]=min(dp[i][0], dp[i-1][0]); dp[i][1]=min(dp[i-1][0], dp[i-1][1])+1; } } ans=min({ans, dp[n][0], dp[n][1]}); cout<<ans<<"\n"; } |