蒟蒻求助!!!50 UNAC
查看原帖
蒟蒻求助!!!50 UNAC
1255488
__notTrueLight__楼主2024/5/18 18:13

#2,#3,#5,#9,#10 WA

代码如下:

#include<bits/stdc++.h>
using namespace std;

inline long long erf_find(long long lis[],long long len,long long find){//二分查找函数 
	long long l=0,r=len-1;//定
	long long mid;//        义 
	while(l<r){//                查 
		mid=(l+r)>>1;//          找  
		if(lis[mid]>find)r=mid;//过 
		else l=mid+1;//          程 
	}
	if(lis[len-1]<find)l=len;//特判*1 
	if(l==0 || l==len-1)return lis[l];//防越界 
	else if(lis[l]-find<find-lis[l-1])return lis[l];//特判 
	else return lis[l-1];//                            *2 
}

int main(){
	long long n,m,res=0,sunn=0;//定义 
	cin>>m>>n;//输入 
	long long nlis[n],mlis[m];//定义 
	for(long long i=0;i<m;i++){//输入
		cin>>mlis[i];//输入
	}
	for(long long i=0;i<n;i++){//输入
		cin>>nlis[i];//输入
	}
	sort(mlis,mlis+m);//排序 
	for(long long i=0;i<n;i++){
		res=erf_find(mlis,m,nlis[i])-nlis[i];//查找并计算 
		sunn+=abs(res);//增加 
	}
	cout<<sunn;

	return/*191981*/0;
}
/*
6 7
1 1 4 5 1 4
1 9 1 9 8 1 0
//只是一个民间样例
12

7 6 
1 9 1 9 8 1 0 
1 1 4 5 1 4
//只是两个民间样例
9 
*/
2024/5/18 18:13
加载中...