#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |