Submission #1301702

#TimeUsernameProblemLanguageResultExecution timeMemory
1301702efegThe short shank; Redemption (BOI21_prison)C++20
15 / 100
2096 ms45440 KiB
#include <bits/stdc++.h>
using namespace std; 

using i64 = long long; 
template<typename T>
using vec = vector<T>; 

template<typename T>
void chmin(T &a,T b){
    a = min(a,b); 
}

int n,d,t; 
vec<int> a; 
vec<vec<int>> dp; 

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); 
    cin >> n >> d >> t;
    a.assign(n+1,0); 
    dp.assign(n + 10,vec<int>(d + 10,INT_MAX)); 
    for (int i = 1; i <= n; i++) cin >> a[i]; 

    int minT = INT_MAX;
    dp[0][1] = 0;  

    for (int i = 1; i <= n; i++){
        dp[i][1] = dp[i-1][1]; 
        chmin(minT,a[i] - i); 
        if (minT <= t - i){
            dp[i][1]++;
        }
    }


    for (int j = 2; j <= d + 1; j++){
        for (int i = j; i <= n; i++){
            int res = dp[i-1][j-1];
            minT = INT_MAX; 
            for (int x = i; x <= n; x++){
                chmin(minT,a[x] - x); 
                if (minT <= t - x){
                    res++; 
                }
                chmin(dp[x][j],res); 
            }
        }          
    }

    int ans = INT_MAX;
    for (int j = 1; j <= d+1; j++){
        chmin(ans,dp[n][j]); 
    }

    cout << ans << 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...