作者:N021039 | 来源:互联网 | 2023-10-11 18:08
【题目描述】
在一个非降序列中,查找与给定值最接近的元素。
【输入】
第一行包含一个整数n,为非降序列长度。1 ≤ n ≤ 100000。
第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。
第三行包含一个整数m,为要询问的给定值个数。1 ≤ m ≤ 10000。
接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。
【输出】
m行,每行一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。
【输入样例】
3
2 5 8
2
10
5
【输出样例】
8
5
代码如下:
//1240:查找最接近的元素
#include
#include
using namespace std;
int i,j,n,m;
long long a[100001],num;void find(int l,int r)
{if(r-l&#61;&#61;1){ //如果距离左边元素近&#xff08;对应<的情况&#xff09;&#xff0c;取左边的//如果距离左右两个元素一样近(对应&#61;的情况)&#xff0c;取左边的if(num-a[l]<&#61;a[r]-num) {cout<}
int main()
{cin>>n;for(i&#61;1;i<&#61;n;i&#43;&#43;)cin>>a[i];sort(a&#43;1,a&#43;1&#43;n);//排序 cin>>m;while(m>0){m--;cin>>num;if(num<&#61;a[1])//找的数小于等于数列中最小的数 {cout<&#61;a[n])//找的数大于等于数列中最大的数 {cout<}