# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1225595 | julian | Financial Report (JOI21_financial) | C++20 | 526 ms | 1114112 KiB |
#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] = -1;
dp[0][1] = a[0];
for (ll i = 1; i < n; i++) {
dp[i][0] = -1;
for (ll k = max(i - d, 0ll); k < i; k++) {
for (ll j = 1; j <= k + 2; j++) {
if (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]);
}
}
}
}
for (ll i = 0; i < n; i++) {
for (ll j = 0; j <= n; j++) {
printf("%4d ", dp[i][j]);
}
printf("\n");
}
cout << (find(dp[n - 1].begin(), dp[n - 1].end(), LLONG_MAX) - dp[n - 1].begin()) - 1 << 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... |