Submission #721331

#TimeUsernameProblemLanguageResultExecution timeMemory
721331n0sk1llSplit the sequence (APIO14_sequence)C++14
100 / 100
1217 ms81788 KiB
#include <bits/stdc++.h> #define FAST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cerr.tie(0) #define mp make_pair #define xx first #define yy second #define pb push_back #define pf push_front #define popb pop_back #define popf pop_front #define all(x) x.begin(),x.end() #define ff(i,a,b) for (int i = a; i < b; i++) #define fff(i,a,b) for (int i = a; i <= b; i++) #define bff(i,a,b) for (int i = b-1; i >= a; i--) #define bfff(i,a,b) for (int i = b; i >= a; i--) using namespace std; long double typedef ld; unsigned int typedef ui; long long int typedef li; pair<int,int> typedef pii; pair<li,li> typedef pli; pair<ld,ld> typedef pld; vector<vector<int>> typedef graph; unsigned long long int typedef ull; //const int mod = 998244353; const int mod = 1000000007; //Note to self: Check for overflow int a[100005]; li pre[100005]; li dp[2][100005]; int gde[204][100005]; li cost(int l, int r) { return (pre[r]-pre[l-1])*(pre[r]-pre[l-1]); } void conq(int l, int r, int optl, int optr, bool cur, int k) { if (l>r) return; int mid=(l+r)/2; dp[cur][mid]=(1ll<<61); int opt; fff(i,optl,min(mid-1,optr)) { li sta=dp[!cur][i]+cost(i+1,mid); if (sta<dp[cur][mid]){ dp[cur][mid]=sta; opt=i; } } //cout<<k<<" "<<mid<<": "<<opt<<endl; gde[k][mid]=opt; conq(l,mid-1,optl,opt,cur,k); conq(mid+1,r,opt,optr,cur,k); } void rekurz(int k, int n) { if (k<2) return; rekurz(k-1,gde[k][n]); cout<<gde[k][n]<<" "; } int main() { int n,k; cin>>n>>k; k++; fff(i,1,n) cin>>a[i]; fff(i,1,n) pre[i]=pre[i-1]+a[i]; bool cur=0; fff(i,1,n) dp[cur][i]=cost(1,i); fff(j,2,k) cur=!cur,conq(j,n,j-1,n,cur,j); li sum=0; fff(i,1,n) sum+=a[i]; cout<<(sum*sum-dp[cur][n])/2<<"\n"; rekurz(k,n); } //Note to self: Check for overflow /* 7 3 4 1 3 4 0 2 3 7 6 4 1 3 4 0 2 3 4 -1 0 1 0 0 1 0 2 */

Compilation message (stderr)

sequence.cpp: In function 'void conq(int, int, int, int, bool, int)':
sequence.cpp:69:9: warning: 'opt' may be used uninitialized in this function [-Wmaybe-uninitialized]
   69 |     conq(mid+1,r,opt,optr,cur,k);
      |     ~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...