3973. 无线网络 - AcWing题库高质量的算法题库https://www.acwing.com/problem/content/3976/切记范围开long long
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
const int N = 1e5 + 4;
int n, m;
int a[N] = { 0 }, b[N] = { 0 };
bool check(ll r) {
int i = 0, j = 0;
while (i < n && j < m) {
ll end = b[j] + r;
ll begin = b[j] - r;
if (end < a[i]) {
j++;
} else if (a[i] >= begin && a[i] <= end) {
i++;
} else if (a[i] < begin) {
return false;
}
}
return i >= n && j < m;
}
int main() {
// system("chcp 65001");
// freopen("C:/Users/zhaochen/Desktop/input.txt", "r", stdin);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < m; i++) {
cin >> b[i];
}
ll left = 0, right = 2e9;
while (left < right) {
ll mid = (left + right) >> 1;
if (check(mid)) {
right = mid;
} else {
left = mid + 1;
}
}
cout << left;
return 0;
}