在一个非降序列中,查找与给定值最接近的元素。
#include <iostream> #include <cstdio> using namespace std; int a[114514],n,x,l,h,m,s; int main() { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&x); while(x--) { scanf("%d",&s); if(s<=a[0]) { _____(1)_______; continue; } if(s>=a[n-1]) { printf("%d\n",a[n-1]); continue; } h=n-1; l=0; while(l<=h) { m=(h+l)/2; if(s==a[m]) ______(2)_____; else if(s>a[m]) l=m+1; else if(s<a[m]) ______(3)_____; } if(______(4)______) printf("%d\n",s); else if(a[l]-s<s-a[h]) printf("%d\n",a[l]); else printf("%d\n",a[h]); } }