이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shortcut.h"
#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;
ll L[5000],L2[5000],R[5000],R2[5000];
ll sum[5000];
long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c)
{
memset(L,0,sizeof(L));
memset(L2,0,sizeof(L2));
memset(R,0,sizeof(R));
memset(R2,0,sizeof(R2));
assert(n<=500);
rep(i,n){
if(i){
L[i]=L[i-1]+l[i-1];
L2[i]=max(L2[i-1],L[i]+d[i]);
}
L[i]=max(L[i],(ll)d[i]);
L2[i]=max(L2[i],(ll)d[i]);
}
for(int i=n-1;i>=0;i--){
if(i<n-1){
R[i]=R[i+1]+l[i];
R2[i]=max(R2[i+1],R[i]+d[i]);
}
R[i]=max(R[i],(ll)d[i]);
R2[i]=max(R2[i],(ll)d[i]);
}
rep(i,n-1)sum[i+1]=sum[i]+l[i];
ll Min=L2[n-1];
rep(i,n)for(int j=i+1;j<n;j++){
ll Max=max({L2[i],R2[j],L[i]+c+R[j]});
for(int k=i+1;k<j;k++){
Max=max(Max,L[i]+min(c+(sum[j]-sum[k]),sum[k]-sum[i])+d[k]);
Max=max(Max,R[j]+min(c+(sum[k]-sum[i]),sum[j]-sum[k])+d[k]);
}
int s=i+1;
ll M=LLONG_MIN;
multiset<ll>se;
for(int k=i+1;k<j;k++){
while(s<k&&(sum[j]-sum[k])+c+(sum[s]-sum[i])<=(sum[k]-sum[s])){
M=max(M,c+(sum[s]-sum[i])+d[s]);
se.erase(se.find(d[s]-sum[s]));
s++;
}
Max=max(Max,M+d[k]+(sum[j]-sum[k]));
if(!se.empty())Max=max(Max,*se.rbegin()+sum[k]+d[k]);
se.insert(d[k]-sum[k]);
}
Min=min(Min,Max);
}
return Min;
}
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const ll INF=1LL<<60;
long long find_shortcut2(int n, std::vector<int> l, std::vector<int> d, int c)
{
vector<ll> sum(n);
for(int i=0;i+1<n;i++){
sum[i+1]=sum[i]+l[i];
}
ll mi=INF;
auto dist=[&](int u,int v){return u<v?sum[v]-sum[u]:sum[u]-sum[v];};
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
ll ma=0;
for(int k=0;k<n;k++){
for(int l=k+1;l<n;l++){
ll s=d[k]+d[l]+dist(k,l);
s=min(s,dist(i,k)+dist(j,l)+c+d[k]+d[l]);
ma=max(ma,s);
}
}
mi=min(mi,ma);
}
}
return mi;
}
# | 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... |