#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);
};
auto solve=[&](int y)->pair<int,int>{
vector<int>dp(N+1,1e18),cnt(N+1);
vector<vector<int>>chk(N+1);
int o=0;
auto bs=[&](int i)->int{
int l=i+1,h=N;
while(l<h){
int m=(l+h)/2;
if(dp[i]+cost(i,m)<dp[o]+cost(o,m)){
h=m;
}
else{
l=m+1;
}
}
return h;
};
dp[0]=-y;
cnt[0]=-1;
for(int i=1;i<=N;i++){
for(int j:chk[i]){
if(j<o){
continue;
}
if(dp[j]+cost(j,i)<dp[o]+cost(o,i)){
o=j;
}
chk[bs(j)].push_back(j);
}
dp[i]=dp[o]+cost(o,i)+y;
cnt[i]=cnt[o]+1;
chk[bs(i)].push_back(i);
}
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 | 1956 KiB | ||||
2 | Hibás válasz | 164ms | 3612 KiB | ||||
subtask2 | 0/10 | ||||||
3 | Elfogadva | 3ms | 2316 KiB | ||||
4 | Elfogadva | 3ms | 2484 KiB | ||||
5 | Elfogadva | 3ms | 2644 KiB | ||||
6 | Hibás válasz | 3ms | 2640 KiB | ||||
7 | Elfogadva | 3ms | 2884 KiB | ||||
subtask3 | 0/10 | ||||||
8 | Elfogadva | 14ms | 2948 KiB | ||||
9 | Elfogadva | 14ms | 3200 KiB | ||||
10 | Hibás válasz | 13ms | 3416 KiB | ||||
11 | Hibás válasz | 12ms | 3688 KiB | ||||
12 | Hibás válasz | 9ms | 3728 KiB | ||||
subtask4 | 0/20 | ||||||
13 | Elfogadva | 158ms | 4884 KiB | ||||
14 | Elfogadva | 179ms | 4932 KiB | ||||
15 | Hibás válasz | 190ms | 5012 KiB | ||||
16 | Hibás válasz | 174ms | 4972 KiB | ||||
17 | Hibás válasz | 157ms | 5096 KiB | ||||
18 | Hibás válasz | 119ms | 5144 KiB | ||||
subtask5 | 0/29 | ||||||
19 | Hibás válasz | 2.655s | 20416 KiB | ||||
20 | Hibás válasz | 2.658s | 20312 KiB | ||||
21 | Elfogadva | 2.634s | 20424 KiB | ||||
22 | Hibás válasz | 2.444s | 20372 KiB | ||||
23 | Hibás válasz | 2.234s | 20328 KiB | ||||
subtask6 | 0/31 | ||||||
24 | Időlimit túllépés | 3.062s | 20456 KiB | ||||
25 | Időlimit túllépés | 3.069s | 20472 KiB | ||||
26 | Időlimit túllépés | 3.062s | 20364 KiB | ||||
27 | Időlimit túllépés | 3.051s | 20456 KiB | ||||
28 | Időlimit túllépés | 3.101s | 20496 KiB | ||||
29 | Időlimit túllépés | 3.051s | 20492 KiB | ||||
30 | Időlimit túllépés | 3.016s | 20748 KiB | ||||
31 | Időlimit túllépés | 3.042s | 20744 KiB | ||||
32 | Időlimit túllépés | 3.053s | 20704 KiB | ||||
33 | Időlimit túllépés | 3.048s | 20368 KiB | ||||
34 | Időlimit túllépés | 3.075s | 20252 KiB | ||||
35 | Időlimit túllépés | 3.059s | 20372 KiB | ||||
36 | Időlimit túllépés | 3.066s | 20620 KiB | ||||
37 | Időlimit túllépés | 3.055s | 20652 KiB | ||||
38 | Hibás válasz | 2.782s | 38360 KiB | ||||
39 | Hibás válasz | 2.395s | 38364 KiB | ||||
40 | Hibás válasz | 2.125s | 38576 KiB |