#include <bits/stdc++.h>
using namespace std;
int n, d;
const int maxn = 401;
int dp[maxn][maxn][maxn];
bool ready[maxn][maxn][maxn];
int nums[maxn];
int solve(int i, int lst, int id_mx) {
if (i > n)
return 0;
if (ready[i][lst][id_mx])
return dp[i][lst][id_mx];
int ans = 0;
// choose i
if (nums[i] > nums[id_mx])
ans = solve(i+1, i, i) + 1;
else
ans = solve(i+1, i, id_mx);
// don't choose i
if (i - lst < d || lst == 0) {
ans = max(ans, solve(i+1, lst, id_mx));
}
dp[i][lst][id_mx] = ans;
ready[i][lst][id_mx] = true;
return ans;
}
int main() {
cin >> n >> d;
for (int i = 1; i <= n; i++)
cin >> nums[i];
nums[0] = -1;
cout << solve(1, 0, 0) << '\n';
}
# | 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... |