样例过了,不知道怎么调。
#include<cstdio>
#include<cmath>
#include<algorithm>
int n,m,a[100005],b[100005];
long long s;
int find(int t){
int l=1,r=n,mid,mi=1000001;
while(l<=r){
mid=(l+r)>>1;
if(a[mid]==t) return 0;
else if(a[mid]<t){
l=mid+1;
mi=std::min(mi,t-a[mid]);
}
else{
r=mid-1;
mi=std::min(mi,a[mid]-t);
}
}
return mi;
}
signed main(){
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++) scanf("%d",a+i);
for(int i=1;i<=n;i++) scanf("%d",b+i);
std::sort(a+1,a+n+1);
for(int i=1;i<=n;i++) s+=find(b[i]);
printf("%d",s);
}