0分求助
查看原帖
0分求助
592681
ran_Diana楼主2022/2/11 16:23

二分没学好,感觉思路对了,交上去一个没a,希望有大佬可以指导一下=_=

#include<bits/stdc++.h>
using namespace std;
int m,a[200000],n,b[200000],ans;
int check(int x,int y)
{
	if(x>=a[y]) return 1;
	else return 0;	
}
int main()
{
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;i++)
	{
		scanf("%d",&a[i]);
	}
	sort(a+1,a+1+m);
	for(int i=1;i<=n;i++)
	{
		int l=1,r=n;
		scanf("%d",&b[i]);
		while(l<r)
		{
			int mid=(l+r)>>1;
			if(check(b[i],mid)) l=mid+1;
			else r=mid;
		}
		ans+=min(abs(b[i]-a[l]),abs(b[i]-a[r]));
	}
	printf("%d",ans);
 	return 0;
}
2022/2/11 16:23
加载中...