103012024-03-30 12:35:15111Majomházcpp17Időlimit túllépés 20/1003.099s522324 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=0;k<=j-1;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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva379ms5444 KiB
subtask210/10
3Elfogadva3ms2268 KiB
4Elfogadva3ms2500 KiB
5Elfogadva3ms2716 KiB
6Elfogadva3ms2948 KiB
7Elfogadva3ms3172 KiB
subtask310/10
8Elfogadva4ms3452 KiB
9Elfogadva4ms3664 KiB
10Elfogadva8ms3892 KiB
11Elfogadva14ms4104 KiB
12Elfogadva29ms5144 KiB
subtask40/20
13Elfogadva64ms4808 KiB
14Elfogadva107ms5188 KiB
15Elfogadva215ms6080 KiB
16Elfogadva870ms11104 KiB
17Elfogadva2.206s20468 KiB
18Időlimit túllépés3.073s43248 KiB
subtask50/29
19Időlimit túllépés3.071s10084 KiB
20Időlimit túllépés3.082s18192 KiB
21Időlimit túllépés3.068s45964 KiB
22Időlimit túllépés3.072s85576 KiB
23Időlimit túllépés3.075s164412 KiB
subtask60/31
24Elfogadva18ms14656 KiB
25Időlimit túllépés3.099s12536 KiB
26Időlimit túllépés3.066s14628 KiB
27Időlimit túllépés3.065s16908 KiB
28Időlimit túllépés3.042s19148 KiB
29Időlimit túllépés3.073s21640 KiB
30Időlimit túllépés3.066s30076 KiB
31Időlimit túllépés3.029s54180 KiB
32Időlimit túllépés3.069s94236 KiB
33Időlimit túllépés3.066s173328 KiB
34Futási hiba209ms522324 KiB
35Futási hiba240ms522296 KiB
36Futási hiba202ms522280 KiB
37Futási hiba243ms522024 KiB
38Futási hiba241ms522012 KiB
39Futási hiba243ms521984 KiB
40Futási hiba238ms521976 KiB