Submission #74151

#TimeUsernameProblemLanguageResultExecution timeMemory
74151MKopchevShortcut (IOI16_shortcut)C++14
0 / 100
3 ms528 KiB
#include<bits/stdc++.h> using namespace std; const int nmax=1e6+42; long long x[nmax]; long long find_shortcut(int n, vector<int> l, vector<int> d, int c) { long long ans=1e18; x[0]=0; for(int i=1;i<n;i++) x[i]=x[i-1]+l[i-1]; for(int p=0;p<n;p++) for(int q=p+1;q<n;q++) { long long now=0; //1<->1 type long long best=-1e18; for(int j=0;j<=p;j++) { now=max(now,d[j]+x[j]+best); best=max(best,d[j]-x[j]); } //if(p==2&&q==7)cout<<now<<endl; //3<->3 type best=-1e18; for(int j=q;j<n;j++) { now=max(now,d[j]+x[j]+best); best=max(best,d[j]-x[j]); } //if(p==2&&q==7)cout<<now<<endl; //1<->3 type best=-1e18; for(int i=0;i<=p;i++) best=max(best,d[i]+x[p]-x[i]); for(int j=q;j<n;j++) now=max(now,d[j]+x[j]-x[q]+best+min(1LL*c,x[q]-x[p])); //if(p==2&&q==7)cout<<best<<" "<<now<<endl; //1<->2 type best=-1e18; for(int i=0;i<=p;i++) best=max(best,d[i]-x[i]+x[p]); for(int j=p;j<=q;j++) now=max(now,best+d[j]+min(x[j]-x[p],x[q]-x[j]+c)); //if(p==2&&q==7)cout<<now<<endl; //2<->3 type best=-1e18; for(int i=p;i<=q;i++) best=max(best,d[i]+min(x[i]-x[p]+c,x[q]-x[i])); for(int j=q;j<n;j++) now=max(now,best+d[j]+x[j]-x[q]); //if(p==2&&q==7)cout<<now<<endl; //2<->2 type for(int i=p;i<=q;i++) for(int j=i;j<=q;j++) now=max(now,d[i]+d[j]+min(x[j]-x[i],x[q]-x[j]+c+x[i]-x[p])); //if(now==100)cout<<p<<" "<<q<<endl; //if(p==2&&q==7)cout<<now<<endl; ans=min(ans,now); } return ans; } /* int main() { //cout<<find_shortcut(9, {10, 10, 10, 10, 10, 10, 10, 10},{20, 0, 30, 0, 0, 40, 0, 40, 0}, 30)<<endl; //cout<<find_shortcut(4, {2, 2, 2},{1, 10, 10, 1}, 1)<<endl; cout<<find_shortcut(3, {1, 1},{1, 1, 1}, 3)<<endl; return 0; } */
#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...