#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N,K;
cin>>N>>K;
vector<int>v(N+1),pf(N+1);
for(int i=0;i<N;i++){
cin>>v[i];
pf[i+1]=pf[i]+v[i];
}
auto cost=[&](int s,int e)->int{
return (pf[e]-pf[s])*(e-s);
};
// if(1){
// N=15;
// v.resize(N+1),pf.resize(N+1);
// for(int i=0;i<N;i++){
// v[i]=rand()%100;
// pf[i+1]=pf[i]+v[i];
// }
// for(int i=1;i<=N;i++){
// for(int j=1;j<=N;j++){
// cout<<setw(4)<<cost(i,j)<<' ';
// }
// cout<<'\n';
// }
// return 1;
// }
auto solve=[&](int y)->pair<int,int>{
vector<int>dp(N+1,1e18),cnt(N+1);
dp[0]=-y;
cnt[0]=-1;
for(int i=1,o=0;i<=N;i++){
for(int j=o;j<i;j++){
int x=dp[j]+cost(j,i)+y;
if(x<dp[i]){
dp[i]=x;
cnt[i]=cnt[j]+1;
o=j;
}
}
}
return{dp[N],cnt[N]};
};
int l=0,h=1e12;
while(l<h){
int m=(l+h)/2;
auto [x,c]=solve(m);
if(c<=K){
h=m;
}
else{
l=m+1;
}
}
auto [x,c]=solve(h);
cout<<x-c*h<<'\n';
return 0;
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 3ms | 1832 KiB | ||||
| 2 | Elfogadva | 68ms | 2556 KiB | ||||
| subtask2 | 10/10 | ||||||
| 3 | Elfogadva | 3ms | 2404 KiB | ||||
| 4 | Elfogadva | 3ms | 2396 KiB | ||||
| 5 | Elfogadva | 3ms | 2628 KiB | ||||
| 6 | Elfogadva | 3ms | 2716 KiB | ||||
| 7 | Elfogadva | 3ms | 2932 KiB | ||||
| subtask3 | 10/10 | ||||||
| 8 | Elfogadva | 6ms | 3044 KiB | ||||
| 9 | Elfogadva | 4ms | 3300 KiB | ||||
| 10 | Elfogadva | 4ms | 3636 KiB | ||||
| 11 | Elfogadva | 4ms | 3740 KiB | ||||
| 12 | Elfogadva | 4ms | 3812 KiB | ||||
| subtask4 | 20/20 | ||||||
| 13 | Elfogadva | 305ms | 4400 KiB | ||||
| 14 | Elfogadva | 222ms | 4648 KiB | ||||
| 15 | Elfogadva | 136ms | 4792 KiB | ||||
| 16 | Elfogadva | 59ms | 4632 KiB | ||||
| 17 | Elfogadva | 43ms | 4708 KiB | ||||
| 18 | Elfogadva | 32ms | 4740 KiB | ||||
| subtask5 | 0/29 | ||||||
| 19 | Időlimit túllépés | 3.058s | 5804 KiB | ||||
| 20 | Időlimit túllépés | 3.085s | 6272 KiB | ||||
| 21 | Elfogadva | 2.911s | 9028 KiB | ||||
| 22 | Elfogadva | 1.524s | 9264 KiB | ||||
| 23 | Elfogadva | 912ms | 9460 KiB | ||||
| subtask6 | 0/31 | ||||||
| 24 | Időlimit túllépés | 3.049s | 9712 KiB | ||||
| 25 | Időlimit túllépés | 3.069s | 10656 KiB | ||||
| 26 | Időlimit túllépés | 3.099s | 11472 KiB | ||||
| 27 | Időlimit túllépés | 3.065s | 12156 KiB | ||||
| 28 | Időlimit túllépés | 3.053s | 12120 KiB | ||||
| 29 | Időlimit túllépés | 3.082s | 12064 KiB | ||||
| 30 | Időlimit túllépés | 3.046s | 12056 KiB | ||||
| 31 | Időlimit túllépés | 3.058s | 12248 KiB | ||||
| 32 | Időlimit túllépés | 3.049s | 12264 KiB | ||||
| 33 | Időlimit túllépés | 3.065s | 12180 KiB | ||||
| 34 | Időlimit túllépés | 3.078s | 12004 KiB | ||||
| 35 | Elfogadva | 1.595s | 16088 KiB | ||||
| 36 | Elfogadva | 1.1s | 16196 KiB | ||||
| 37 | Elfogadva | 865ms | 15916 KiB | ||||
| 38 | Elfogadva | 662ms | 16120 KiB | ||||
| 39 | Elfogadva | 632ms | 16120 KiB | ||||
| 40 | Elfogadva | 606ms | 16120 KiB | ||||