Submission #989722

#TimeUsernameProblemLanguageResultExecution timeMemory
989722kustizusSplit the sequence (APIO14_sequence)C++17
100 / 100
812 ms84304 KiB
#include <bits/stdc++.h> using namespace std; const long long N=1e5; long long n,k,idx=1,a[N+5],pre[N+5]; int bef1[N+5][205]; vector <long long> bef(N+5),dp(N+5); long long Cal(int i, int j){ return (pre[j]-pre[i-1])*(pre[n]-pre[j]); } void dnc(int l, int r, int optl, int optr){ if (l>r) return; int md=l+r>>1; long long ans=-1e18,pos=0; for (int i=min(optr,md);i>=optl;--i){ long long d=bef[i-1]+Cal(i,md); if (d>ans){ ans=d; pos=i; } } dp[md]=ans; bef1[md][idx]=pos; dnc(l,md-1,optl,pos); dnc(md+1,r,pos,optr); } void Solve(){ cin>>n>>k; for (int i=1;i<=n;++i){ cin>>a[i]; pre[i]=pre[i-1]+a[i]; } for (int i=1;i<=n;++i) bef[i]=Cal(1,i); for (int i=2;i<=k;++i){ ++idx; dnc(i,n,i,n); for (int j=1;j<=n;++j){ bef[j]=dp[j]; dp[j]=0; } } long long ans=-1e18,pos; for (int i=1;i<=n;++i) if (bef[i]>ans){ ans=bef[i]; pos=i; } cout<<ans<<"\n"; for (int i=k;i>=1;--i){ cout<<pos<<' '; pos=bef1[pos][i]-1; } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen ("FILE.INP","r",stdin); // freopen ("FILE.OUT","w",stdout); int t=1; // cin>>t; while (t--) Solve(); }

Compilation message (stderr)

sequence.cpp: In function 'void dnc(int, int, int, int)':
sequence.cpp:12:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   12 |     int md=l+r>>1;
      |            ~^~
sequence.cpp: In function 'void Solve()':
sequence.cpp:50:24: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   50 |         pos=bef1[pos][i]-1;
      |             ~~~~~~~~~~~^
#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...