Submission #1206588

#TimeUsernameProblemLanguageResultExecution timeMemory
1206588lopkusThe short shank; Redemption (BOI21_prison)C++17
0 / 100
2096 ms33628 KiB
#include <bits/stdc++.h> using namespace std; void solve() { int n, d, t; std::cin >> n >> d >> t; std::vector<int> a(n + 1); for(int i = 1; i <= n; i++) { std::cin >> a[i]; } std::vector<std::vector<int>> dp(n + 1, std::vector<int>(d + 1, n + 1)); dp[0][0] = 0; std::vector<int> c = a; for(int i = 1; i <= n; i++) { if(i) c[i] = std::min(c[i], c[i - 1] + 1); dp[i][0] = dp[i - 1][0]; if(c[i] <= t) { dp[i][0] += 1; } } for(int i = 1; i <= n; i++) { for(int c = 1; c <= d; c++) { for(int j = i; j >= 1; j--) { std::vector<int> b = a; for(int x = j + 1; x <= i; x++) { b[x] = std::min(b[x], b[x - 1] + 1); } int cnt = 0; for(int x = j; x <= i; x++) { if(b[x] <= t) { cnt += 1; } } dp[i][c] = std::min(dp[i][c], dp[j - 1][c - 1] + cnt); } } } std::cout << dp[n][d]; } signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int t = 1; //std::cin >> t; while (t--) { solve(); } 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...