Submission #134776

#TimeUsernameProblemLanguageResultExecution timeMemory
134776ckodserShortcut (IOI16_shortcut)C++14
0 / 100
2 ms504 KiB
#include "shortcut.h" #include<bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair #define pii pair<ll,ll> #define F first #define S second #define ld long double using namespace :: std; const ll maxn=1e5+500; const ll inf=1e17+900; ll pos[maxn]; ll farr[maxn]; ll farl[maxn]; ll dr[maxn]; ll dl[maxn]; long long find_shortcut(int n,vector<int> l,vector<int> d, int c) { pos[0]=0; for(ll i=1;i<n;i++){ pos[i]=pos[i-1]+l[i-1]; } dl[0]=0; farl[0]=d[0]; for(ll i=1;i<n;i++){ farl[i]=max((ll)d[i],farl[i-1]+l[i-1]); dl[i]=max(dl[i-1],farl[i-1]+l[i-1]+d[i]); } dr[n-1]=0; farr[n-1]=d[n-1]; for(ll i=n-2;i>=0;i--){ farr[i]=max((ll)d[i],farr[i+1]+l[i]); dr[i]=max(dr[i+1],farr[i+1]+l[i]+d[i]); } ll ans=dr[0]; for(ll i=0;i<n;i++){ for(ll j=i+1;j<n;j++){ ll res=max(dr[j],dl[i]); ll sdi=d[i]; ll sdj=d[j]; d[j]=farr[j]; d[i]=farl[i]; ll tol=c+pos[j]-pos[i]; for(ll u=i;u<=j;u++){ for(ll v=u+1;v<=j;v++){ res=max(res,d[v]+d[u]+min(pos[v]-pos[u],tol-(pos[v]-pos[u]))); } } ans=min(ans,res); d[j]=sdj; d[i]=sdi; } } return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...