0分求助!!

P1678 烦恼的高考志愿

CHNyyds @ 2022-05-14 22:07:50


#include<bits/stdc++.h>
using namespace std;
const int N=1e8+10;
int a[N],b[N];
int m,n;

int main()
{
    scanf("%d%d",&m,&n);
    for(int i=0;i<m;i++) scanf("%d",&a[i]);
    for(int i=0;i<n;i++) scanf("%d",&b[i]);
    sort(a,a+n);
    int sum=0;
    for(int j=0;j<n;j++)
    {
        int l=0,r=m-1;
        while(l<r)
        {
            int mid=l+r>>1;
            if(b[j]<=a[mid]) r=mid;
            else l=mid+1;
        }
        sum+=min(abs(a[l]-b[j]),abs(a[l-1]-b[j]));
    }
    printf("%d",sum);

}

by vix_hentx @ 2022-06-14 18:25:30

r=m 不是m-1


by Habseligkeit @ 2022-09-25 21:23:36

int mid=(l+r)>>1;


by Habseligkeit @ 2022-09-25 21:32:18

你的b数组也没有排序,你这怎么二分啊 二分的前提是有序


|