题解
2025-08-03 23:34:51
发布于:新疆
2阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[100005],b[100005];
bool check(int mid){
int r=1;
for(int l=1;l<=n;l++){
while(r<=m&&abs(a[l]-b[r])>mid){
r++;
}
if(r>m){
return false;
}
r++;
}
return true;
}
int main(){
cin>>n>>m;
int ans=0;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>b[i];
}
sort(a+1,a+1+n);
sort(b+1,b+1+m);
if(n>m){
for(int i=1;i<=n;i++){
swap(a[i],b[i]);
}
swap(n,m);
}
int l=0,r=1e9;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
r=mid-1;
ans=mid;
}else{
l=mid+1;
}
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个