Submission #69734

#TimeUsernameProblemLanguageResultExecution timeMemory
69734khohkoHomecoming (BOI18_homecoming)C++17
100 / 100
698 ms173676 KiB
#include<bits/stdc++.h> #include "homecoming.h" using namespace std; #define ll long long #define fr first #define sc second #define pb push_back #define ARRS ((ll)(6e6+100)) #define MAX ((ll)(1e16+100)) ll a[ARRS]; ll b[ARRS]; ll s[ARRS]; ll dp[ARRS][2]; ll sum(ll l,ll r){ return s[r]-s[l-1]; } long long solve(int n, int K, int *B, int *A){ ll pas=0,p=0; for(int i=1; i<=n; i++){ a[i]=A[i-1]; a[i+n]=A[i-1]; b[i]=B[i-1]; b[i+n]=B[i-1]; p-=a[i]; p+=b[i]; } for(int i=1; i<=2*n; i++)s[i]=s[i-1]+a[i]; pas=max(pas,p); pair<ll,ll> mn={MAX,MAX}; ll es=0,l=1; vector<pair<ll,ll> > g; for(int i=n+1; i<=2*n; i++){ //ll sm=0; //for(int j=i; j<=2*n; j++){ // sm-=a[j]-b[j]; if(i-l>=n)es+=a[l]-b[l++]; if(es>=0)es=0,l=i; es-=a[i]-b[i]; mn=min(mn,{es,i-1}); g.pb({es,i-1}); } sort(g.begin(),g.end()); for(int i=0; i<10; i++){ ll s=g[i].sc; s++; s%=n; dp[0][0]=0; dp[0][1]=-MAX; for(int i=1; i<=n; i++){ dp[i][0]=dp[i-1][0]; dp[i][1]=-MAX; if(i>=K){ dp[i][1]=max(dp[i][1],dp[i-K][0]+b[i-K+1+s]-sum(i-K+1+s,i+s)); dp[i][1]=max(dp[i][1],dp[i-1][1]+b[i-K+1+s]-a[i+s]); } dp[i][0]=max(dp[i][0],dp[i][1]); //cout<<dp[i][0]<<" "<<dp[i][1]<<endl; } pas=max(pas,dp[n][0]); } //cout<<endl; return pas; }

Compilation message (stderr)

homecoming.cpp: In function 'long long int solve(int, int, int*, int*)':
homecoming.cpp:43:25: warning: operation on 'l' may be undefined [-Wsequence-point]
   if(i-l>=n)es+=a[l]-b[l++];
                        ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...