查找最接近目标的数
2025-07-27 17:55:38
发布于:上海
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int a[N];
int main(){
int bs;
int n,q;
cin>> n>>q;
for(int i=1;i<=n;i++){
cin >> a[i];
}
sort(a+1,a+1+n);
while(q--){
int target;
cin>>target;
int l=1,r=n;
int ans=n+1;
while(l<=r){
int mid =(l+r)/2;
if(a[mid]>=target){
r=mid-1;
ans=mid;
}
else{
l=mid+1;
}
}
if(ans1){
cout << a[1] << endl;
}
else if(ansn+1){
cout << a[n] << endl;
}
else{
if(a[ans] - target < target - a[ans - 1]){
cout << a[ans] << endl;
}
else {
cout << a[ans - 1] << endl;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个