http://codeforces.com/problemset/problem/702/C
N个城市,M个蜂巢,每个蜂巢为其周边半径小于R的城市服务,城市和蜂巢排成一行。
求R的最小值使得所有城市都被服务。
二分。
#include <bits/stdc++.h>
using namespace std;
int n,m;
long long a[100005],b[100005];
bool ok(long long mid){
int t=0;
for (int i=0;i<m;i++){
while (t<n){
if (a[t]>=b[i]-mid&&a[t]<=b[i]+mid) t++;
else break;
}
}
if (t==n) return true;
else return false;
}
int main(){
cin >> n >> m;
for (int i=0;i<n;i++){
cin >> a[i];
}
for (int i=0;i<m;i++){
cin >> b[i];
}
long long l=0,r=2000000005;
while (l<=r){
long long mid=(l+r)/2;
if (ok(mid)) r=mid-1;
else l=mid+1;
}
cout << l << endl;
}