# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
162569 | 2019-11-08T19:44:04 Z | brcode | Shortcut (IOI16_shortcut) | C++14 | 0 ms | 0 KB |
#include <iostream> #include <bits/stdc++.h> using namespace std; const long long MAXN = 2e5+5; long long pref[MAXN]; long long dist(long long x,long long y){ if(x>y){ swap(x,y); } if(x==y){ return 0; } long long res = 0; if(x){ res = pref[x-1]; } return res+pref[y-1]; } long long find_shortcut(long long n, vector<int> l, vector<int> d, int c){ pref[0] = l[0]; for(long long i=1;i<n;i++){ pref[i] = pref[i-1]+l[i]; } long long ans = 0; for(long long i=0;i<n;i++){ for(long long j=i+1;j<n;j++){ long long tempans = 0; for(long long x=0;x<n;x++){ for(long long y=x+1;y<n;y++){ long long hold = min(dist(x,y),min(dist(x,i)+c+dist(y,j),dist(x,j)+c+dist(y,i))); tempans = max(tempans,hold+d[x]+d[y]); } } ans = max(ans,tempans); } } return ans; }