Submission #970815

#TimeUsernameProblemLanguageResultExecution timeMemory
970815vladiliusThe short shank; Redemption (BOI21_prison)C++17
0 / 100
420 ms524288 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int inf = numeric_limits<int> :: max(); 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<vector<int>>> dp(n + 1, vector<vector<int>>(n + 1, vector<int>(d + 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); dp[i][j][0] = cnt; tt++; } } for (int k = 1; k <= d; k++){ for (int i = 1; i <= n; i++){ for (int j = i + k; j <= n; j++){ dp[i][j][k] = inf; for (int m = i + k - 1; m <= j - k; m++){ dp[i][j][k] = min(dp[i][j][k], dp[i][m][k - 1] + dp[m + 1][j][k - 1]); } } } } cout<<dp[1][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...