제출 #1226136

#제출 시각아이디문제언어결과실행 시간메모리
1226136overwatch9Financial Report (JOI21_financial)C++20
28 / 100
197 ms160780 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];
    nums[0] = -1;
    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...