Submission #970824

#TimeUsernameProblemLanguageResultExecution timeMemory
970824vladiliusThe short shank; Redemption (BOI21_prison)C++17
15 / 100
2041 ms524288 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int n, d, t; cin>>n>>d>>t;
    vector<int> a(n + 1);
    for (int i = 1; i <= n; i++){
        cin>>a[i];
    }
    vector<vector<int>> h(n + 1, vector<int>(n + 1));
    for (int i = 1; i <= n; i++){
        priority_queue<int, vector<int>, greater<int>> pq;
        int tt = 0, cnt = 0;
        for (int j = i; j <= n; j++){
            pq.push(a[j] - tt);
            int m = pq.top() + tt;
            cnt += (m <= t);
            h[i][j] = cnt;
            tt++;
        }
    }

    vector<vector<int>> dp(n + 1, vector<int>(d + 1));
    for (int i = 1; i <= n; i++){
        dp[i][0] = h[1][i];
    }
    for (int k = 1; k <= d; k++){
        for (int i = 1; i <= n; i++){
            dp[i][k] = dp[i][k - 1];
            for (int j = 1; j < i; j++){
                dp[i][k] = min(dp[i][k], dp[j][k - 1] + h[j + 1][i]);
            }
        }
    }
    
    cout<<dp[n][d]<<"\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...