求助!!!样例过了,但是0分
查看原帖
求助!!!样例过了,但是0分
753239
Li_Junlin楼主2023/9/3 18:47
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
long long b[100000];
long long an,bn,l,r,mid,c,c1,sum;
bool cmp(long long &a,long long &b)
{
	return a<b;
}
int main()
{
	freopen("P1678_1.in","r",stdin);
	freopen("P1678_3.out","w",stdout); 
	scanf("%lld%lld",&an,&bn);
	for(int i=0;i<an;i++) scanf("%lld",&a[i]);
	sort(a+0,a+0+an,cmp);
//	for(int i=an;i<100000;i++) a[i]=-1000001;
	for(int i=0;i<bn;i++)
	{
		l=0;
		r=bn-1;
		mid=(l+r)>>1;
		scanf("%lld",&b[i]);
		while(l<r)
		{
			mid=(l+r)>>1;
			if(a[mid]>=b[i]) r=mid;
			else l=mid+1;
		}
		while(a[r]==a[r+1]) r++;
		c1=abs(a[r]-b[i]);
		c=abs(a[r+1]-b[i]);
		if(r>=(an-1)) sum+=c1;
		else
		sum+=min(c1,c);
	}
	printf("%lld",sum);
}
2023/9/3 18:47
加载中...