求救最后一个测试点没有通过
查看原帖
求救最后一个测试点没有通过
832977
Submerge69楼主2024/2/27 17:05
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100010],b[100010];
long long num;
int f;
void check(int temp){
	int l=1,r=m,mid;
	f=abs(a[1]-temp);
	while(l<=r){
		mid=l+(r-l)/2;
		if(a[mid]>temp) r=mid-1;
		else l=mid+1;
		f=abs(temp-a[mid]);
	}
	if(mid+1<=m) f=min(f,abs(temp-a[mid+1]));
	if(mid-1>=1) f=min(f,abs(temp-a[mid-1]));
	return ;
}

int main(){
	scanf("%d %d",&m,&n);
	for(int i=1;i<=m;i++) scanf("%d",&a[i]);//录取线 
	for(int i=1;i<=n;i++) scanf("%d",&b[i]);//成绩 
	sort(a+1,a+m+1); 
	for(int i=1;i<=n;i++){
		f=2000000;
		check(b[i]);
		num+=f;
	}
	printf("%d",num);
	return 0;
} 
2024/2/27 17:05
加载中...