二分有啥不对的吗?
查看原帖
二分有啥不对的吗?
780416
baojiaming01楼主2023/3/18 22:39
#include<bits/stdc++.h>
using namespace std;
int a[100001],b[100001];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1; i<=n; i++) cin>>a[i];
	for(int i=1; i<=m; i++) cin>>b[i];
	sort(a+1,a+1+n);
	long long ans=0;
	for(int i=1; i<=m; i++)
	{
	    int l=1, r=n+1;
	    while(l<=r)
	    {
	        int mid=l+r/2;
	        if(a[mid]>=b[i]) l=mid-1;
	        else if(a[mid]<=b[i]) r=mid;
	    }
	    if(b[i]<=a[1]) ans=ans+a[1]-b[i];
	    else ans=ans+min(abs(a[l-1]-b[i]),abs(a[l]-b[i]));
	}
	cout<<ans<<endl;
	return 0;
}

全TLE~~~

2023/3/18 22:39
加载中...