# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1221814 | adam17 | Financial Report (JOI21_financial) | C++20 | 4097 ms | 1114112 KiB |
#include <iostream>
#include <vector>
using namespace std;
int N, D;
vector<int> A;
vector<vector<int>> DP;
int main() {
scanf("%i %i", &N, &D);
A.resize(N);
for (int i = 0; i < N; i++) {
cin >> A[i];
}
DP.resize(N + 1);
for (int i = 0; i < N + 1; i++) {
DP[i].resize(N + 1);
for (int j = 0; j <= N; j++) {
DP[i][j] = ((j == 0) ? -2147483648 : 2147483647);
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
for (int k = i; k < min(N, i + D); k++) {
DP[k + 1][j + ((A[k] > DP[i][j]) ? 1 : 0)] = min(DP[k + 1][j + ((A[k] > DP[i][j]) ? 1 : 0)], max(A[k], DP[i][j]));
}
}
}
// for (int i = 0; i <= N; i++) {
// for (int j = 0; j < N + 1; j++) {
// cout << DP[i][j] << ' ';
// }
// cout << endl;
// }
for (int i = N; i >= 0; i--) {
if (DP[N][i] != 2147483647) {
cout << i << endl;
return 0;
}
}
}
Compilation message (stderr)
# | 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... |