Submission #1226132

#TimeUsernameProblemLanguageResultExecution timeMemory
1226132overwatch9Financial Report (JOI21_financial)C++20
0 / 100
80 ms1604 KiB
#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];
    cout << solve(1, 0, 0) << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...