40pts,玄关
查看原帖
40pts,玄关
1409859
fonglingyueyin楼主2025/7/24 11:40
#include<bits/stdc++.h>
using namespace std;
int n,m;
int scl[100005],scr[100005];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);

    cin>>m>>n;
    for(int i=1;i<=m;i++)cin>>scl[i];
    for(int i=1;i<=n;i++)cin>>scr[i];
    sort(scr+1,scr+n+1);
    sort(scl+1,scl+m+1);
    int sum=0;
    for(int i=1;i<=n;i++)
    {
        int l=1,r=m;
        while(l<r)//比scr[i]小的最大值
        {
            int mid=(l+r+1)/2; 
            if(scl[mid]>scr[i])
            {
                r=mid-1;
            }
            else if(scl[mid]<=scr[i])
            {
                l=mid;
            }
        }
        int l1=1,r1=m;
        while(r1>l1)//比scr[i]大的最小值
        {
            int mid=(l1+r1)/2; 
            if(scl[mid]<scr[i])
            {
                l1=mid+1;
            }
            else if(scl[mid]>=scr[i])
            {
                r1=mid;
            }
        }
        sum+=min(scl[r1]-scr[i],scr[i]-scl[l]);
        
    }
    cout<<sum;
}

// l = mid     r = mid - 1     mid = (l + r + 1) / 2
// l = mid + 1     r = mid     mid = (l + r) / 2

求条

2025/7/24 11:40
加载中...