Submission #1273549

#TimeUsernameProblemLanguageResultExecution timeMemory
1273549KindaGoodGamesThe short shank; Redemption (BOI21_prison)C++20
15 / 100
446 ms589824 KiB
#include<bits/stdc++.h> using namespace std; vector<int> arr; int n,d,t; int INF = numeric_limits<int>::max()/2; int calc(int l, int r){ int time = INF; int cnt = 0; for(int i = l; i <= r; i++){ time = min(time+1, arr[i]); if(time <= t){ cnt++; } } return cnt; } int main(){ cin >> n >> d >> t; arr.resize(n); for(int i = 0; i < n; i++){ cin >> arr[i]; } vector<vector<int>> C(n, vector<int>(n)); for(int i = 0; i < n; i++){ for(int j = i; j < n; j++){ C[i][j] = calc(i,j); } } // d pillows, [0;i] vector<vector<int>> dp(d+1, vector<int>(n, INF)); for(int i = 0; i < n; i++){ dp[0][i] = calc(0,i); } for(int k = 1; k <= d; k++){ for(int i = 0; i < n; i++){ for(int j = 1; j <= i; j++){ dp[k][i] = min(dp[k][i], dp[k-1][j-1] + C[j][i]); } } } cout << dp[d][n-1] << endl; }
#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...