10305 2024. 03. 30 13:22:34 111 Majomház cpp17 Futási hiba 20/100 1.177s 117568 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1832 KiB
2 Elfogadva 1.177s 117568 KiB
subtask2 10/10
3 Elfogadva 3ms 2300 KiB
4 Elfogadva 2ms 2388 KiB
5 Elfogadva 3ms 2412 KiB
6 Elfogadva 3ms 2764 KiB
7 Elfogadva 3ms 2980 KiB
subtask3 10/10
8 Elfogadva 3ms 2892 KiB
9 Elfogadva 9ms 3888 KiB
10 Elfogadva 63ms 8160 KiB
11 Elfogadva 266ms 14200 KiB
12 Elfogadva 689ms 20136 KiB
subtask4 0/20
13 Elfogadva 3ms 3348 KiB
14 Elfogadva 4ms 3588 KiB
15 Elfogadva 43ms 9176 KiB
16 Futási hiba 3ms 3328 KiB
17 Futási hiba 2ms 3268 KiB
18 Futási hiba 2ms 3268 KiB
subtask5 0/29
19 Futási hiba 2ms 3268 KiB
20 Futási hiba 3ms 3496 KiB
21 Futási hiba 3ms 3704 KiB
22 Futási hiba 3ms 3692 KiB
23 Futási hiba 3ms 3688 KiB
subtask6 0/31
24 Elfogadva 14ms 6576 KiB
25 Elfogadva 16ms 6876 KiB
26 Futási hiba 3ms 4168 KiB
27 Futási hiba 2ms 4204 KiB
28 Futási hiba 3ms 4208 KiB
29 Futási hiba 2ms 4208 KiB
30 Futási hiba 2ms 4208 KiB
31 Futási hiba 2ms 4208 KiB
32 Futási hiba 2ms 4200 KiB
33 Futási hiba 2ms 4120 KiB
34 Futási hiba 2ms 4208 KiB
35 Futási hiba 3ms 4252 KiB
36 Futási hiba 2ms 4132 KiB
37 Futási hiba 2ms 4220 KiB
38 Futási hiba 2ms 4132 KiB
39 Futási hiba 2ms 4128 KiB
40 Futási hiba 2ms 4220 KiB