이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
// name = shortcut_iz_n2log.cpp, type = cpp.g++11
#include "shortcut.h"
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iostream>
//#include "shortcut.h"
using namespace std;
typedef long long ll;
const ll INF = (ll)1e18;
long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c) {
vector<ll> x(n);
x[0] = 0;
for (int i = 1; i < n; i++) x[i] = x[i - 1] + l[i - 1];
ll L = 0, R = INF;
while (R - L > 1) {
ll M = ((ll)L + R) / 2;
ll minSum = -INF, maxSum = INF;
ll minDif = -INF, maxDif = INF;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
// abs(x[i] - l) + abs(x[j] - r) <= M - c - d[i] - d[j]
// abs(x[i] - l) <= M - c - d[i] - d[j] - abs(x[j] - r)
// x[i] - l <= M - c - d[i] - d[j] - abs(x[j] - r)
// x[i] - l >= -M + c + d[i] + d[j] + abs(x[j] - r)
// abs(x[j] - r) <= M - c - d[i] - d[j] - x[i] + l
// x[j] - r <= M - c - d[i] - d[j] - x[i] + l
// l + r >= -M + c + d[i] + d[j] + x[i] + x[j]
// x[j] - r >= -M + c + d[i] + d[j] + x[i] - l
// l - r >= -M + c + d[i] + d[j] + x[i] - x[j]
// abs(x[j] - r) <= M - c - d[i] - d[j] + x[i] - l
// x[j] - r <= M - c - d[i] - d[j] + x[i] - l
// l - r <= M - c - d[i] - d[j] + x[i] - x[j]
// x[j] - r >= -M + c + d[i] + d[j] - x[i] + l
// l + r <= M - c - d[i] - d[j] + x[i] + x[j]
if (x[j] - x[i] + d[i] + d[j] > M) {
minSum = max(minSum, -M + c + d[i] + d[j] + x[i] + x[j]);
maxSum = min(maxSum, M - c - d[i] - d[j] + x[i] + x[j]);
minDif = max(minDif, -M + c + d[i] + d[j] + x[i] - x[j]);
maxDif = min(maxDif, M - c - d[i] - d[j] + x[i] - x[j]);
}
}
}
bool found = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
ll sum = x[i] + x[j];
ll dif = x[i] - x[j];
if (minSum <= sum && sum <= maxSum && minDif <= dif && dif <= maxDif) {
found = 1;
}
}
}
if (found) R = M;
else L = M;
}
return R;
}
| # | 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... |