103052024-03-30 13:22:34111Majomházcpp17Futási hiba 20/1001.177s117568 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=(k-1)/2;
	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;
	if(N*K>100000)exit(1);
	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';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva1.177s117568 KiB
subtask210/10
3Elfogadva3ms2300 KiB
4Elfogadva2ms2388 KiB
5Elfogadva3ms2412 KiB
6Elfogadva3ms2764 KiB
7Elfogadva3ms2980 KiB
subtask310/10
8Elfogadva3ms2892 KiB
9Elfogadva9ms3888 KiB
10Elfogadva63ms8160 KiB
11Elfogadva266ms14200 KiB
12Elfogadva689ms20136 KiB
subtask40/20
13Elfogadva3ms3348 KiB
14Elfogadva4ms3588 KiB
15Elfogadva43ms9176 KiB
16Futási hiba3ms3328 KiB
17Futási hiba2ms3268 KiB
18Futási hiba2ms3268 KiB
subtask50/29
19Futási hiba2ms3268 KiB
20Futási hiba3ms3496 KiB
21Futási hiba3ms3704 KiB
22Futási hiba3ms3692 KiB
23Futási hiba3ms3688 KiB
subtask60/31
24Elfogadva14ms6576 KiB
25Elfogadva16ms6876 KiB
26Futási hiba3ms4168 KiB
27Futási hiba2ms4204 KiB
28Futási hiba3ms4208 KiB
29Futási hiba2ms4208 KiB
30Futási hiba2ms4208 KiB
31Futási hiba2ms4208 KiB
32Futási hiba2ms4200 KiB
33Futási hiba2ms4120 KiB
34Futási hiba2ms4208 KiB
35Futási hiba3ms4252 KiB
36Futási hiba2ms4132 KiB
37Futási hiba2ms4220 KiB
38Futási hiba2ms4132 KiB
39Futási hiba2ms4128 KiB
40Futási hiba2ms4220 KiB