10300 2024. 03. 30 12:34:13 111 Majomház cpp17 Hibás válasz 10/100 2.66s 521632 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

#define INF (int)1e18

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=1;i<=N;i++){
		cin>>v[i];
		pf[i]=pf[i-1]+v[i];
	}
	vector<vector<int>>dp(K+1,vector<int>(N+1,INF));
	vector<vector<int>>p(K+1,vector<int>(N+1));
	dp[0][0]=0;
	for(int i=1;i<=N;i++){
		dp[0][i]=pf[i]*i;
	}
	for(int i=1;i<=K;i++){
		for(int j=i;j<=N;j++){
			auto calc=[&](int k)->int{
				return dp[i-1][k]+(pf[j]-pf[k])*(j-k);
			};
			int l=0,h=j-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;
				}
			}
			for(int k=l;k<=h;k++){
				int c=calc(k);
				if(c<dp[i][j]){
					dp[i][j]=c;
					p[i][j]=k;
				}
			}
		}
	}
	cout<<dp[K][N]<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1828 KiB
2 Elfogadva 20ms 5444 KiB
subtask2 10/10
3 Elfogadva 3ms 2340 KiB
4 Elfogadva 3ms 2632 KiB
5 Elfogadva 3ms 2716 KiB
6 Elfogadva 3ms 2728 KiB
7 Elfogadva 3ms 2708 KiB
subtask3 0/10
8 Elfogadva 3ms 3024 KiB
9 Elfogadva 3ms 3304 KiB
10 Hibás válasz 4ms 3440 KiB
11 Elfogadva 4ms 3960 KiB
12 Elfogadva 8ms 4700 KiB
subtask4 0/20
13 Elfogadva 6ms 4556 KiB
14 Hibás válasz 8ms 4888 KiB
15 Elfogadva 12ms 5912 KiB
16 Elfogadva 39ms 10672 KiB
17 Elfogadva 94ms 20212 KiB
18 Elfogadva 449ms 82820 KiB
subtask5 0/29
19 Hibás válasz 71ms 16484 KiB
20 Elfogadva 192ms 32676 KiB
21 Hibás válasz 620ms 87700 KiB
22 Hibás válasz 1.235s 166404 KiB
23 Hibás válasz 2.434s 323620 KiB
subtask6 0/31
24 Elfogadva 17ms 15092 KiB
25 Elfogadva 43ms 18844 KiB
26 Elfogadva 70ms 22616 KiB
27 Elfogadva 94ms 26532 KiB
28 Hibás válasz 120ms 30308 KiB
29 Elfogadva 149ms 34428 KiB
30 Hibás válasz 277ms 50680 KiB
31 Hibás válasz 671ms 98280 KiB
32 Elfogadva 1.332s 177396 KiB
33 Hibás válasz 2.66s 334804 KiB
34 Futási hiba 206ms 521632 KiB
35 Futási hiba 196ms 521608 KiB
36 Futási hiba 196ms 521580 KiB
37 Futási hiba 197ms 521552 KiB
38 Futási hiba 197ms 521548 KiB
39 Futási hiba 196ms 521544 KiB
40 Futási hiba 196ms 521528 KiB