103002024-03-30 12:34:13111Majomházcpp17Hibás válasz 10/1002.66s521632 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva20ms5444 KiB
subtask210/10
3Elfogadva3ms2340 KiB
4Elfogadva3ms2632 KiB
5Elfogadva3ms2716 KiB
6Elfogadva3ms2728 KiB
7Elfogadva3ms2708 KiB
subtask30/10
8Elfogadva3ms3024 KiB
9Elfogadva3ms3304 KiB
10Hibás válasz4ms3440 KiB
11Elfogadva4ms3960 KiB
12Elfogadva8ms4700 KiB
subtask40/20
13Elfogadva6ms4556 KiB
14Hibás válasz8ms4888 KiB
15Elfogadva12ms5912 KiB
16Elfogadva39ms10672 KiB
17Elfogadva94ms20212 KiB
18Elfogadva449ms82820 KiB
subtask50/29
19Hibás válasz71ms16484 KiB
20Elfogadva192ms32676 KiB
21Hibás válasz620ms87700 KiB
22Hibás válasz1.235s166404 KiB
23Hibás válasz2.434s323620 KiB
subtask60/31
24Elfogadva17ms15092 KiB
25Elfogadva43ms18844 KiB
26Elfogadva70ms22616 KiB
27Elfogadva94ms26532 KiB
28Hibás válasz120ms30308 KiB
29Elfogadva149ms34428 KiB
30Hibás válasz277ms50680 KiB
31Hibás válasz671ms98280 KiB
32Elfogadva1.332s177396 KiB
33Hibás válasz2.66s334804 KiB
34Futási hiba206ms521632 KiB
35Futási hiba196ms521608 KiB
36Futási hiba196ms521580 KiB
37Futási hiba197ms521552 KiB
38Futási hiba197ms521548 KiB
39Futási hiba196ms521544 KiB
40Futási hiba196ms521528 KiB