题目出处:《信息学奥赛一本通》第七章练习7
题目描述
在一个非降序列中,查找与给定值最接近的元素。
输入格式
第一行包含一个整数 $n$ ,为非降序列长度。 $1 \le n \le 100000$ 。
第二行包含 $n$ 个元素,为非降序列各元素。所有元素的大小均在 $1$ ~ $10^9$ 之间。
第三行包含一个整数 $m$ ,为要询问的次数。 $1 \le m \le 10000$ 。
接下来 $m$ 行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在 $0$ ~ $10^9$ 之间。
输出格式
$m$ 行,每行一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。
样例输入
3
2 5 8
2
10
5
样例输出
8
5
题目分析
这道题目和“查找大于等于x的最小元素”是一样的到了。
我们假设我们用“查找大于等于x的最小元素”的方法求得了答案对应的坐标为 $res$ ,则会有三种情况:
$res = -1$ ,说明不存在大于等于 $x$ 的最小元素,也就是说所有的数都小于 $x$ ,那么这种情况下数组 $a$ 中最后面的那个数 $a_n$ 就是答案;
$res = 1$,说明 $x$ 比数组 $a$ 中的所有元素都要笑,那么这种情况下数组 $a$ 中最前面的那个数 $a_1$ 就是答案;
$res \ne -1 且 res \