超时,求调悬关!!!(我的二分总是超时,有什么方法判断吗
查看原帖
超时,求调悬关!!!(我的二分总是超时,有什么方法判断吗
1252442
lucy2012楼主2024/3/20 18:12
#include<bits/stdc++.h>
using namespace std;
int m,n,a[10000010],b[10000010],l=0,r=10000000,mid,sum=0;
int find(int num){
	int l=1,r=10000000;
	while(l<r){
		mid=l+r>>1;
		if(num>=mid)
		    l=mid;
		else
		    r=mid;
	}
	if(abs(a[l]-num)>abs(a[r]-num))
        return abs(a[r]-num);
    else
        return abs(a[l]-num);
}
int main(){
    cin>>m>>n;
    for(int i=1;i<=m;i++)
		cin>>a[i];
	sort(a+1,a+1+m);
	for(int i=1;i<=n;i++){
		cin>>b[i];
		sum+=find(b[i]);
	}
	 cout<<sum;  
	return 0;
}	
2024/3/20 18:12
加载中...