#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define v vector
#define lp(i, s, e) for (int i = s; i < e; ++i)
ll n;
v<ll> a, b, c;
bool tryi(ll max_d, v<ll> vec) {
v<ll> pref(2 * n + 2, 0);
v<ll> suf(2 * n + 2, 0);
ll idx = 0;
lp(i, 0, 2 * n) {
if (idx < n && abs(a[i] - vec[idx]) <= max_d) {
idx++;
}
pref[i + 1] = idx;
}
idx = 0;
for (ll i = 2 * n - 1; i >= 0; --i) {
if (idx < n && abs(a[i] - vec[n - 1 - idx]) <= max_d) {
idx++;
}
suf[i] = idx;
}
lp(i, 0, n + 1) {
if (pref[i] + suf[i + n + 1] >= n) {
return 1;
}
}
return 0;
}
bool ck(ll d) {
if (tryi(d, b))
return 1;
if (tryi(d, c))
return 1;
return 0;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
a.resize(2 * n);
lp(i, 0, n + n) cin >> a[i];
b.resize(n), c.resize(n);
lp(i, 0, n) cin >> b[i];
lp(i, 0, n) cin >> c[i];
sort(b.begin(), b.end());
sort(c.begin(), c.end());
ll ans = 1e18, l = 0, r = 1e18;
while (l <= r) {
ll mid = (l + r) / 2;
if (ck(mid)) {
ans = min(ans, mid);
r = mid - 1;
} else
l = mid + 1;
}
cout << ans;
}
| # | 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... |