subtask#1求助,开了long long了
查看原帖
subtask#1求助,开了long long了
1497158
tvick11楼主2024/12/6 22:46

代码如下:

#include<bits/stdc++.h>//万能头文件启动
#include<math.h>

#include<algorithm>

using namespace std;

struct s
{

	 long long  fen;
	 long long  line;
   
}c[1000003];	

bool com(s a,s b)
{

	return a.line<b.line;
}

int n,m;

int er(int x)//二分查找 
{

	int star=0,end=n+1;

	int mid=(star+end)/2;
  
	while(star+1<end)
	{
  
		if(c[mid].line==x)return 0;
    
		else if(c[mid].line>x)
		{
			end=mid;
			mid=(star+end)/2;
		}
    
		else
		{
			star=mid;
			mid=(star+end)/2;
		}
	}
	return min(abs(x-c[mid].line),abs(c[mid+1].line-x));
}

int main()
{

	c[0].line=-1000;
	cin>>n>>m;
	 long long  ans=0;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i].line;
	}
	sort(c+1,c+n+1,com);
	for(int i=0;i<m;i++)
	{
		cin>>c[i].fen;
		ans+=er(c[i].fen);
	}
	printf("%lld",ans);
	return 0;
}
2024/12/6 22:46
加载中...