// Olaf Surgut 12.12.2022 17:06:23 #include <bits/stdc++.h> using namespace std; const int N = 50000 + 11; int n, a[N], dp[N][2][2]; // [i][dn|up][inf] int main() { ios::sync_with_stdio(false), cin.tie(nullptr); cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) { dp[i][0][0] = min(dp[i - 1][1][0] + (a[i - 1] <= a[i]), dp[i - 1][1][1]); dp[i][0][1] = min(dp[i - 1][1][0], dp[i - 1][1][1]) + 1; dp[i][1][0] = min(dp[i - 1][0][0] + (a[i - 1] >= a[i]), dp[i - 1][0][1]); dp[i][1][1] = min(dp[i - 1][0][0], dp[i - 1][0][1]) + 1; } cout << min({dp[n][0][0], dp[n][0][1], dp[n][1][0], dp[n][1][1]}) << '\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 | // Olaf Surgut 12.12.2022 17:06:23 #include <bits/stdc++.h> using namespace std; const int N = 50000 + 11; int n, a[N], dp[N][2][2]; // [i][dn|up][inf] int main() { ios::sync_with_stdio(false), cin.tie(nullptr); cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) { dp[i][0][0] = min(dp[i - 1][1][0] + (a[i - 1] <= a[i]), dp[i - 1][1][1]); dp[i][0][1] = min(dp[i - 1][1][0], dp[i - 1][1][1]) + 1; dp[i][1][0] = min(dp[i - 1][0][0] + (a[i - 1] >= a[i]), dp[i - 1][0][1]); dp[i][1][1] = min(dp[i - 1][0][0], dp[i - 1][0][1]) + 1; } cout << min({dp[n][0][0], dp[n][0][1], dp[n][1][0], dp[n][1][1]}) << '\n'; } |