This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using D = double;
using uint = unsigned int;
#ifdef WIN32
#define LLD "%I64d"
#else
#define LLD "%lld"
#endif
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
const int maxn = 1000005;
const ll inf = 1e18;
ll x[maxn], d[maxn];
int ans1, ans2;
int n, m;
int C;
inline bool in(ll x, ll lb, ll ub)
{
return x >= lb && x <= ub;
}
bool can(ll maxd)
{
ll maxsum = inf;
ll minsum = -inf;
ll maxdif = inf;
ll mindif = -inf;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (x[j] - x[i] + d[j] + d[i] > maxd)
{
maxsum = min(maxsum, x[i] + x[j] + (maxd - C - d[i] - d[j]));
minsum = max(minsum, x[i] + x[j] - (maxd - C - d[i] - d[j]));
maxdif = min(maxdif, x[j] - x[i] + (maxd - C - d[i] - d[j]));
mindif = max(mindif, x[j] - x[i] - (maxd - C - d[i] - d[j]));
}
}
}
if (maxsum < minsum || maxdif < mindif) return false;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++) if (in(x[i] + x[j], minsum, maxsum) && in(x[j] - x[i], mindif, maxdif))
{
ans1 = i;
ans2 = j;
return true;
}
}
return false;
}
long long find_shortcut(int N, vector <int> L0, vector <int> L, int C_)
{
C = C_;
n = N;
ll curlen = 0;
for (int i = 0; i < n; i++)
{
d[i] = L[i];
x[i] = curlen;
if (i + 1 < n) curlen += L0[i];
}
ll l = 0;
ll r = inf;
while (r - l > 1)
{
ll mid = (l + r) / 2;
if (can(mid)) r = mid;
else l = mid;
}
// cerr << r << ' ' << curlen << endl;
// cerr << minres << endl;
// for (int i = 0; i < n; i++) cerr << d[i] << ' ';
// cerr << endl;
assert(can(r));
return r;
//end1 = ans1;
//end2 = ans2;
}
# | 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... |