Submission #1225591

#TimeUsernameProblemLanguageResultExecution timeMemory
1225591julianFinancial Report (JOI21_financial)C++20
28 / 100
4106 ms1114112 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] = 0;
    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 (j <= k + 1 && 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]);
                }
            }
        }
        
    }

    cout << (find(dp[n - 1].begin(), dp[n - 1].end(), LLONG_MAX) - dp[n - 1].begin()) - 1 << endl;

    

    return 0;
}
#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...