이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shortcut.h"
#include <vector>
#include <algorithm>
using namespace std;
struct rect {
long long lft,top,rgt,bot;
rect():lft(-1e18),top(1e18),rgt(1e18),bot(-1e18) {}
rect(long long _lft,long long _top,long long _rgt,long long _bot):lft(_lft),top(_top),rgt(_rgt),bot(_bot) {}
};
rect comb(const rect &a, const rect &b) {
return rect(max(a.lft,b.lft),min(a.top,b.top),min(a.rgt,b.rgt),max(a.bot,b.bot));
}
struct inter {
long long a,b,c;
rect eval(long long k) const {
long long z=k-c;
return rect(a-b-z,a+b+z,a-b+z,a+b-z);
}
};
vector<long long> qs;
vector<inter> inters;
bool work(long long k,long long cost) {
rect cur;
for (auto &i:inters) {
if (i.c-cost+i.b-i.a<=k) continue;
auto tmp=i.eval(k);
cur=comb(cur,i.eval(k));
}
if (cur.lft>cur.rgt||cur.bot>cur.top) return false;
int n=(int)qs.size();
long long x,y;
for (int i=0;i<n;i++) {
for (int j=i+1;j<n;j++) {
x=qs[i]-qs[j];
y=qs[i]+qs[j];
if (cur.lft<=x&&x<=cur.rgt&&cur.bot<=y&&y<=cur.top) return true;
}
}
return false;
}
long long find_shortcut(int n, vector<int> l, vector<int> d, int c)
{
qs.resize(n,0);
for (int i=1;i<n;i++) {
qs[i]=l[i-1];
qs[i]+=qs[i-1];
}
inters.reserve(n*(n-1)/2);
for (int i=0;i<n;i++) {
for (int j=i+1;j<n;j++) {
inters.push_back(inter{qs[i],qs[j],d[i]+d[j]+c});
}
}
long long lo=0;
long long hi=1e15;
long long mid;
while (lo<hi) {
mid=(lo+hi)>>1;
if (work(mid,c)) {
hi=mid;
} else {
lo=mid+1;
}
}
return lo;
}
컴파일 시 표준 에러 (stderr) 메시지
shortcut.cpp: In function 'bool work(long long int, long long int)':
shortcut.cpp:36:8: warning: variable 'tmp' set but not used [-Wunused-but-set-variable]
auto tmp=i.eval(k);
^~~
# | 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... |