#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INF (int)1e18
int pf[100001];
map<tuple<int,int,int>,int>mem;
int cost(int s,int e){
return (pf[e]-pf[s])*(e-s);
}
int solve(int s,int e,int k){
if(k==0){
return cost(s,e);
}
if(mem.find({s,e,k})!=mem.end()){
return mem[{s,e,k}];
}
int k1=k-1,k2=0;
auto calc=[&](int i)->int{
return solve(s,i,k1)+solve(i,e,k2);
};
int l=s+k1,h=e-k2-1;
while(h-l>=3){
int m1=l+(h-l)/3;
int m2=h-(h-l)/3;
if(calc(m1)<=calc(m2)){
h=m2;
}
else{
l=m1;
}
}
int res=INF;
for(int i=l;i<=h;i++){
res=min(res,calc(i));
}
mem[{s,e,k}]=res;
return res;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N,K;
cin>>N>>K;
vector<int>v(N);
for(int i=0;i<N;i++){
cin>>v[i];
}
for(int i=0;i<N;i++){
pf[i+1]=pf[i]+v[i];
}
cout<<solve(0,N,K)<<'\n';
// cout<<K<<" "<<mem.size()<<'\n';
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 3ms | 2112 KiB | ||||
2 | Elfogadva | 575ms | 10556 KiB | ||||
subtask2 | 10/10 | ||||||
3 | Elfogadva | 3ms | 2256 KiB | ||||
4 | Elfogadva | 3ms | 2456 KiB | ||||
5 | Elfogadva | 3ms | 2544 KiB | ||||
6 | Elfogadva | 3ms | 2548 KiB | ||||
7 | Elfogadva | 3ms | 2892 KiB | ||||
subtask3 | 0/10 | ||||||
8 | Elfogadva | 4ms | 2820 KiB | ||||
9 | Elfogadva | 13ms | 3072 KiB | ||||
10 | Hibás válasz | 32ms | 3572 KiB | ||||
11 | Elfogadva | 75ms | 4700 KiB | ||||
12 | Elfogadva | 186ms | 7192 KiB | ||||
subtask4 | 0/20 | ||||||
13 | Elfogadva | 4ms | 3284 KiB | ||||
14 | Elfogadva | 28ms | 4144 KiB | ||||
15 | Elfogadva | 192ms | 6724 KiB | ||||
16 | Elfogadva | 1.521s | 21736 KiB | ||||
17 | Időlimit túllépés | 3.058s | 19668 KiB | ||||
18 | Időlimit túllépés | 3.046s | 24332 KiB | ||||
subtask5 | 0/29 | ||||||
19 | Hibás válasz | 233ms | 10728 KiB | ||||
20 | Időlimit túllépés | 3.053s | 18140 KiB | ||||
21 | Időlimit túllépés | 3.062s | 19492 KiB | ||||
22 | Időlimit túllépés | 3.062s | 20452 KiB | ||||
23 | Időlimit túllépés | 3.055s | 22308 KiB | ||||
subtask6 | 0/31 | ||||||
24 | Elfogadva | 14ms | 6360 KiB | ||||
25 | Elfogadva | 14ms | 6360 KiB | ||||
26 | Elfogadva | 14ms | 6488 KiB | ||||
27 | Elfogadva | 17ms | 6912 KiB | ||||
28 | Elfogadva | 54ms | 9640 KiB | ||||
29 | Hibás válasz | 423ms | 16400 KiB | ||||
30 | Időlimit túllépés | 3.069s | 19220 KiB | ||||
31 | Időlimit túllépés | 3.053s | 19368 KiB | ||||
32 | Időlimit túllépés | 3.065s | 20312 KiB | ||||
33 | Időlimit túllépés | 3.062s | 21560 KiB | ||||
34 | Időlimit túllépés | 3.086s | 23132 KiB | ||||
35 | Időlimit túllépés | 3.046s | 26228 KiB | ||||
36 | Időlimit túllépés | 3.078s | 31344 KiB | ||||
37 | Időlimit túllépés | 3.059s | 37832 KiB | ||||
38 | Időlimit túllépés | 3.072s | 59912 KiB | ||||
39 | Időlimit túllépés | 3.073s | 70108 KiB | ||||
40 | Időlimit túllépés | 3.062s | 87592 KiB |