_Yvonne @ 2023-08-10 09:06:45
求大佬帮忙看看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;
}