#pragma GCC optimize("O3, unroll-loops, Ofast")
#include<bits/stdc++.h>
using namespace std;
vector<int> arr;
int C[4000][4000];
int dp[4000][4000];
int n,d,t;
int INF = numeric_limits<int>::max()/2;
int cost(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;
}
void calc(int k, int l, int r, int optl, int optr){
if(l >= r) return;
int mid = (l+r)/2;
int opt = -1;
if(mid == 3){
cerr<<"";
}
for(int j = optl; j <= min(optr,mid); j++){
if(dp[k][mid] > dp[k-1][j-1] + C[j][mid]){
opt = j;
dp[k][mid] = dp[k-1][j-1] + C[j][mid];
}
}
calc(k,l,mid,optl,opt);
calc(k,mid+1,r,opt,optr);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> d >> t;
arr.resize(n);
for(int i = 0; i < n; i++){
cin >> arr[i];
}
// C.resize(n, vector<int>(n));
for(int i = 0; i < n; i++){
int time = INF;
int cnt = 0;
for(int j = i; j < n; j++){
time = min(time+1, arr[j]);
if(time <= t){
cnt++;
}
C[i][j] = cnt;
}
}
// d pillows, [0;i]
// dp.resize(d+1, vector<int>(n, INF));
for(int i = 0; i < 4000; i++){
for(int j = 0; j < 4000; j++){
dp[i][j] = INF;
}
}
for(int i = 0; i < n; i++){
dp[0][i] = C[0][i];
}
for(int i = 1; i <= d; i++){
calc(i,0,n,0,n);
}
cout << dp[d][n-1] << endl;
}
Compilation message (stderr)
prison.cpp:1:47: warning: bad option '-f unroll-loops' to pragma 'optimize' [-Wpragmas]
1 | #pragma GCC optimize("O3, unroll-loops, Ofast")
| ^
prison.cpp:1:47: warning: bad option '-f Ofast' to pragma 'optimize' [-Wpragmas]
prison.cpp:13:22: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
13 | int cost(int l, int r){
| ^
prison.cpp:13:22: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
prison.cpp:26:50: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
26 | void calc(int k, int l, int r, int optl, int optr){
| ^
prison.cpp:26:50: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
prison.cpp:43:10: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
43 | int main(){
| ^
prison.cpp:43:10: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
# | 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... |