10分求助
查看原帖
10分求助
1046779
Henry_234楼主2023/7/29 13:15
#include<bits/stdc++.h>
using namespace std;
long long b[100005],m,aa,a[10000005],n;
int ef(int num){
	int L=0,R=n-1;
	int mid=(L+R)/2;
	while(L<=R){
		mid=(L+R)/2;
		if(b[mid]==num){
			return num; 
		} 
		else if(b[mid]>num){
			R=mid-1;
		} 
		else if(b[mid]<num){
			L=mid+1;
		} 
	}
	if(num-b[L-1]<b[L]-num){
		return b[L-1];
	}
	else return b[L];
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int num=0;
	cin>>m>>n;
	for(int i=0;i<m;i++){
		cin>>b[i];
	}
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(b,b+m);
	for(int i=0;i<n;i++){
		aa=a[i];
		if(b[0]>=aa){
			num+=b[0]-aa;
		}
		else if(b[n-1]<=aa){
			num+=aa-b[n-1];
		}
		else{
			if(ef(aa)<=aa) num+=aa-ef(aa);
			else num+=ef(aa)-aa;
		}
		
	}
	cout<<num;
	return 0;
}
2023/7/29 13:15
加载中...