CHNyyds @ 2022-05-14 22:07:50
#include<bits/stdc++.h>
using namespace std;
const int N=1e8+10;
int a[N],b[N];
int m,n;
int main()
{
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++) scanf("%d",&a[i]);
for(int i=0;i<n;i++) scanf("%d",&b[i]);
sort(a,a+n);
int sum=0;
for(int j=0;j<n;j++)
{
int l=0,r=m-1;
while(l<r)
{
int mid=l+r>>1;
if(b[j]<=a[mid]) r=mid;
else l=mid+1;
}
sum+=min(abs(a[l]-b[j]),abs(a[l-1]-b[j]));
}
printf("%d",sum);
}
by vix_hentx @ 2022-06-14 18:25:30
r=m 不是m-1
by Habseligkeit @ 2022-09-25 21:23:36
int mid=(l+r)>>1;
by Habseligkeit @ 2022-09-25 21:32:18
你的b数组也没有排序,你这怎么二分啊 二分的前提是有序