7-7 最近邻 (10 分)
在一个非降序列中,查找与给定值最接近的元素。
输入格式:
第一行包含两个数,一个整数n,表示序列中元素个数。(1 ≤ n ≤ 1000000。),一个整数x,表示要查找x的最近邻。
第二行包含n个整数,为非降序列各元素。所有元素的大小均在1~1e9之间。
输出格式:
一个整数,为最接近相应给定值的元素值。若有多个值满足条件,输出最小的一个。
输入样例:
在这里给出一组输入。例如:
3 6 2 5 8
输出样例:
5
作者
严华云
单位
湖州师范学院
代码长度限制
16 KB
时间限制
250 ms
内存限制
64 MB
#include <iostream> #include<cmath> using namespace std; int main() { int n,x; int left, right, mid; cin >> n >> x; int a[n+1]; for (int i = 1; i <= n;i++){ scanf("%d",&a[i]); } left = 1; right = n; while(left+1<right){ mid = (left + right) / 2; if(a[mid]>x) right = mid; else left = mid; } if(fabs(a[left]-x)<=fabs(a[right]-x)) cout << a[left] << endl; else cout << a[right] << endl; return 0; }