求助大佬 70分2 6 10没过
查看原帖
求助大佬 70分2 6 10没过
1047010
_Yvonne楼主2023/8/10 09:06

求大佬帮忙看看TT

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp(const void *a,const void *b)
{
	return *(int *)a-*(int *)b;
}
int fun(long long int a[],long long int x,long long int m)
{
	int low=0,max=m-1;
	if(a[max]<x) return abs(a[max]-x);
	if(a[low]>x) return abs(a[low]-x);
	int mid=(low+max)/2;
	int flag=abs(a[mid]-x);
	while(low<max)
	{
		int mid=(low+max)/2;
		if(a[mid]>x) max=mid;
		else low=mid+1;
		if(flag>abs(a[mid]-x)) flag=abs(a[mid]-x);
	}
	return flag;
}
int main()
{
	long long int m,n,i;
	scanf("%lld %lld",&m,&n);
	long long int a[m],b[n];
	for(i=0;i<m;i++)
	{
		scanf("%lld",&a[i]);
	}
	for(i=0;i<n;i++)
	{
		scanf("%lld",&b[i]);
	}
	qsort(a,m,sizeof(a[0]),cmp);
	long long int ans=0;
	for(i=0;i<n;i++)
	{
		long long int flag=fun(a,b[i],m);
		ans+=flag;
	}
	printf("%lld",ans);
	return 0;
}
2023/8/10 09:06
加载中...