Submission #304415

#TimeUsernameProblemLanguageResultExecution timeMemory
304415vipghn2003Split the sequence (APIO14_sequence)C++14
60 / 100
357 ms131076 KiB
#include<bits/stdc++.h> #define int long long using namespace std; const int N=1e5+5; const int K=205; int n,k,a[N],s[N],dp[K][N],opt[K][N]; void calc(int lev,int l,int r,int L,int R) { if(l>r) return ; int mid=(l+r)/2; dp[lev][mid]=1e18; for(int i=L;i<=min(mid-1,R);i++) { if(dp[lev][mid]>dp[lev-1][i]+(s[mid]-s[i])*(s[mid]-s[i])) { dp[lev][mid]=dp[lev-1][i]+(s[mid]-s[i])*(s[mid]-s[i]); opt[lev][mid]=i; } } calc(lev,l,mid-1,L,opt[lev][mid]); calc(lev,mid+1,r,opt[lev][mid],R); } main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin>>n>>k; k++; for(int i=1;i<=n;i++) { cin>>a[i]; s[i]=s[i-1]+a[i]; } int res=s[n]*s[n]; dp[1][0]=1e18; for(int i=1;i<=n;i++) { dp[1][i]=s[i]*s[i]; opt[1][i]=i; } for(int lev=2;lev<=k;lev++) calc(lev,1,n,0,n-1); res-=dp[k][n]; cout<<res/2<<'\n'; int cur=n; while(k>1) { cur=opt[k][cur]; k--; cout<<cur<<' '; } }

Compilation message (stderr)

sequence.cpp:26:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   26 | main()
      |      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...