103082024-03-30 13:36:40111Majomházcpp17Futási hiba 0/100238ms524876 KiB
#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-2,k2=1;
	auto calc=[&](int i)->int{
		return solve(s,i,k1)+solve(i,e,k2);
	};
	int l=s+k1+1,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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Futási hiba180ms524876 KiB
2Futási hiba219ms524636 KiB
subtask20/10
3Futási hiba180ms524404 KiB
4Futási hiba180ms524180 KiB
5Futási hiba177ms523948 KiB
6Futási hiba186ms523720 KiB
7Futási hiba180ms523480 KiB
subtask30/10
8Futási hiba177ms523372 KiB
9Futási hiba225ms523140 KiB
10Futási hiba180ms523136 KiB
11Futási hiba221ms522904 KiB
12Futási hiba219ms522676 KiB
subtask40/20
13Futási hiba224ms522456 KiB
14Futási hiba180ms522452 KiB
15Futási hiba225ms522464 KiB
16Futási hiba224ms522228 KiB
17Futási hiba224ms522232 KiB
18Futási hiba224ms522244 KiB
subtask50/29
19Futási hiba226ms522228 KiB
20Futási hiba180ms522228 KiB
21Futási hiba180ms522036 KiB
22Futási hiba180ms522040 KiB
23Futási hiba228ms521808 KiB
subtask60/31
24Elfogadva14ms7900 KiB
25Futási hiba234ms521808 KiB
26Futási hiba231ms521816 KiB
27Futási hiba234ms521792 KiB
28Futási hiba234ms521816 KiB
29Futási hiba231ms521824 KiB
30Futási hiba231ms521816 KiB
31Futási hiba236ms521588 KiB
32Futási hiba234ms521560 KiB
33Futási hiba236ms521564 KiB
34Futási hiba238ms521584 KiB
35Futási hiba233ms521576 KiB
36Futási hiba234ms521588 KiB
37Futási hiba190ms521396 KiB
38Futási hiba189ms521396 KiB
39Futási hiba186ms521392 KiB
40Futási hiba231ms521400 KiB