#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 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... |