20分
查看原帖
20分
1011579
jess1ca1o0g3楼主2023/10/27 21:02

样例过了,不知道怎么调。

#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);
}
2023/10/27 21:02
加载中...