#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <numeric>
#include <climits>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll n, d;
cin >> n >> d;
vector<ll> a(n);
for (ll& i : a) {
cin >> i;
}
vector<vector<ll>> dp(n, vector<ll>(n + 1, LLONG_MAX));
dp[0][0] = 0;
dp[0][1] = a[0];
for (ll i = 1; i < n; i++) {
dp[i][0] = 0;
for (ll k = max(i - d, 0ll); k < i; k++) {
for (ll j = 1; j <= k + 2; j++) {
//if (i == n - 1)
// cout << i << " " << j << " " << k << " " << (j <= k + 1 && a[i] <= dp[k][j]) << endl;
if (j <= k + 1 && a[i] <= dp[k][j]) {
dp[i][j] = min(dp[i][j], max(a[i], dp[k][j]));
}
if (a[i] > dp[k][j - 1]) {
dp[i][j] = min(dp[i][j], a[i]);
}
}
}
}
cout << (find(dp[n - 1].begin(), dp[n - 1].end(), LLONG_MAX) - dp[n - 1].begin()) - 1 << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |