题解
2025-07-23 10:47:49
发布于:江苏
14阅读
0回复
0点赞
特判真烦
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n,m;
cin>>n;
int a[n+10];
for(int i=0;i<n;i++){
cin>>a[i];
}
cin>>m;
while(m--){
int x,l=0,r=n-1;
cin>>x;
while(l<=r){
int mid=(l+r)>>1;
if(a[mid]==x){
cout<<a[mid]<<'\n';
break;
}else if(a[mid]<x&&a[mid+1]>x){
if(x-a[mid]<a[mid+1]-x){
cout<<a[mid]<<'\n';
break;
}else if(x-a[mid]>a[mid+1]-x){
cout<<a[mid+1]<<'\n';
break;
}else{
cout<<min(a[mid],a[mid+1])<<'\n';
break;
}
}else if(a[0]>x){
cout<<a[0]<<'\n';
break;
}else if(a[n-1]<x){
cout<<a[n-1]<<'\n';
break;
}else if(a[mid]<x){
l=mid+1;
}else{
r=mid-1;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个