이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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]=d[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]=d[n-1];
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |