求助,我自己输入的测试数据都对,但是一个样例都过不了,能给几个洛谷的测试数据嘛大佬们
#include<iostream>
#include<algorithm>
#include<cmath>
//导入数学库
using namespace std;
//分析:这道题, 划分性质的是绝对值的变化,先减少后增,绝对值一直减少的就是蓝驱
const int N=100010;
int scores[N];
int nums[N];
bool check(int x,int score,int disValue) { //这是找绝对值的最小值
if(abs(x-score) <= disValue) return true;
return false;
}
int search(int *arr,int len,int score ) {
int l=0,r=len;int disValue=abs(arr[0]-score);
while(l+1!=r) {
int mid=(l+r)/2;
if(check(arr[mid],score,disValue)){
l=mid;
disValue=abs(arr[mid]-score);
}
else r=mid;
}
return disValue;
}
int main() {
//cin,cout 输入输出加速
int m,n;
long long sum=0;
cin>>m>>n;
for(int i=0; i<m; i++) cin>>scores[i];
for(int i=0; i<n; i++) cin>>nums[i];
//先将学校分数从小到大排序
sort(scores,scores+m);
for(int i=0;i<n;i++){
sum+=search(scores,m,nums[i]);
}
cout<<sum;
}