이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shortcut.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long int lld;
long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c)
{
lld lo,hi;
lo=-1;
hi=1000000000000000;
lld level[n];
level[0]=0;
for(int i=1;i<n;i++)level[i]=level[i-1]+l[i-1];
while(hi-lo>1){
lld mid=(hi+lo)/2;
lld min_sum,max_sum;
lld min_diff,max_diff;
min_sum=0;
min_diff=0;
max_sum=1000000000000000;
max_diff=1000000000000000;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
lld D=level[j]-level[i];
if(D+d[i]+d[j]>mid){
lld u=mid-d[i]-d[j]-c;
min_sum=max(min_sum,level[i]+level[j]-u);
min_diff=max(min_diff,level[j]-level[i]-u);
max_sum=min(max_sum,level[i]+level[j]+u);
max_diff=min(max_diff,level[j]-level[i]+u);
}
}
}
bool b=false;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(level[i]+level[j]>=min_sum && level[i]+level[j]<=max_sum && level[j]-level[i]<=max_diff && level[j]-level[i]>=min_diff){
b=true;
}
}
}
if(b)hi=mid;
else lo=mid;
}
return hi;
}
# | 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... |