求助大佬 70分2 6 10没过

P1678 烦恼的高考志愿

_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;
}

|