题解
查找最接近的元素
1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int n,q,d; int a[1000005]; int ef(int d){ int mid,l=2,r=n; while(l<=r){ mid=l+(r-l)/2; if(a[mid]>d){//大了 r=mid-1;//缩小范围 } else if(a[mid]<=d){//小等扩大范围 l=mid+1; } } if(abs(a[l]-d)>=abs(a[l-1]-d)){//找差值小的 return a[l-1]; } else{ return a[l]; } } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } cin>>q; for(int i=1;i<=q;i++){ cin>>d; cout<<ef(d)<<endl; } return 0; }
- 1