题解 100% AC
2025-07-24 09:07:47
发布于:江苏
32阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int a[200010];
int main(){
int n,m,t;cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
int l=1,r=n;
cin>>m;
sort(a+1,a+n+1);
for(int i=1;i<=m;i++){
cin>>t;
l=1,r=n;
for(;l<=r;){
int mid=(l+r)/2;
if(a[mid]==t){
cout<<a[mid]<<endl;
break;
}else if(a[mid]<t&&a[mid+1]>t){
if(t-a[mid]>a[mid+1]-t){
cout<<a[mid+1]<<endl;
break;
}else if(t-a[mid]<a[mid+1]-t){
cout<<a[mid]<<endl;
break;
}else{
cout<<min(a[mid],a[mid+1])<<endl;
break;
}
}else if(a[1]>t){
cout<<a[1]<<endl;
break;
}else if(a[n]<t){
cout<<a[n]<<endl;
break;
}else if(a[mid]<t) l=mid+1;
else r=mid-1;
}
}
return 0;
}
这里空空如也
有帮助,赞一个