NOI的1.1的01:查找最接近的元素代码错了不知道怎么修改
原题在http://noi.openjudge.cn/ch0111/01/
二分查找函数怎么写啊,怎么才能得到最接近元素的下标
#include<iostream>
#include<math.h>
using namespace std;
int bi_search(int n,int a[],int t){
int left=0,right=t,res=-1,mid,min=0;
if(a[t]<=n) res=t;
else if(a[0]>=n) res=0;
else {
while(left<=right){
mid=(right+left)/2;
if(a[mid]==n) {res=mid;break;}
else if(a[mid]>n) right=mid-1;
else left=mid+1;
}
res=mid;
}
return res;
}
int main(){
int n,i,l,a[100010],m,b[100010],t,e;
cin>>n;
for(i=0;i<n;i++) cin>>a[i];
t=i-1;
cin>>m;
for(i=0;i<m;i++) cin>>b[i];
for(i=0;i<m;i++){
e=bi_search(b[i],a,t);
cout<<a[e]<<endl;
}
}