__notTrueLight__ @ 2024-05-18 18:13:55
代码如下:
#include<bits/stdc++.h>
using namespace std;
inline long long erf_find(long long lis[],long long len,long long find){//二分查找函数
long long l=0,r=len-1;//定
long long mid;// 义
while(l<r){// 查
mid=(l+r)>>1;// 找
if(lis[mid]>find)r=mid;//过
else l=mid+1;// 程
}
if(lis[len-1]<find)l=len;//特判*1
if(l==0 || l==len-1)return lis[l];//防越界
else if(lis[l]-find<find-lis[l-1])return lis[l];//特判
else return lis[l-1];// *2
}
int main(){
long long n,m,res=0,sunn=0;//定义
cin>>m>>n;//输入
long long nlis[n],mlis[m];//定义
for(long long i=0;i<m;i++){//输入
cin>>mlis[i];//输入
}
for(long long i=0;i<n;i++){//输入
cin>>nlis[i];//输入
}
sort(mlis,mlis+m);//排序
for(long long i=0;i<n;i++){
res=erf_find(mlis,m,nlis[i])-nlis[i];//查找并计算
sunn+=abs(res);//增加
}
cout<<sunn;
return/*191981*/0;
}
/*
6 7
1 1 4 5 1 4
1 9 1 9 8 1 0
//只是一个民间样例
12
7 6
1 9 1 9 8 1 0
1 1 4 5 1 4
//只是两个民间样例
9
*/
by __notTrueLight__ @ 2024-07-30 21:54:48
已AC,此贴结。