萌新求助,100分,全改long long 了Subtask #1还是过不去
查看原帖
萌新求助,100分,全改long long 了Subtask #1还是过不去
835108
20224021j楼主2023/5/6 11:27
#include<bits/stdc++.h>
#include<math.h> 
using namespace std;
long long int arr[1000005];

int main()
{
	long long int m,n;
	long long int i;
	cin>>m>>n;
	long long int num;
	long long int left,right,mid;
	long long int sum=0;
	long long int ans;
	
	for(i=0;i<m;i++)
	{
		cin>>arr[i];
	}
	
	sort(arr,arr+m);//数组长度
	
	while(n--)
	{
		cin>>num;
		//开始二分查找
		left=0;
		right=m-1;
		ans=1000;
		
		while(left<=right)
		{
			mid=(left+right)/2;
			if(arr[mid]==num)
			{
				ans=0;
				break;
			}
			else if(arr[mid]>num)
			{
				ans=min(ans,abs(arr[mid]-num));
				right=mid-1;
			}
			else if(arr[mid]<num)
			{
				ans=min(ans,abs(arr[mid]-num));
				left=mid+1;
			}
		}
		sum+=ans;
	}
	
	cout<<sum;
	
	return 0;
}
2023/5/6 11:27
加载中...