NOI 1 11查詢最接近的元素

2021-08-23 14:09:18 字數 1097 閱讀 9887

描述

在乙個非降序列中,查詢與給定值最接近的元素。

輸入第一行包含乙個整數n,為非降序列長度。1 <= n <= 100000。

第二行包含n個整數,為非降序列各元素。所有元素的大小均在0-1,000,000,000之間。

第三行包含乙個整數m,為要詢問的給定值個數。1 <= m <= 10000。

接下來m行,每行乙個整數,為要詢問最接近元素的給定值。所有給定值的大小均在0-1,000,000,000之間。

輸出m行,每行乙個整數,為最接近相應給定值的元素值,保持輸入順序。若有多個值滿足條件,輸出最小的乙個。

樣例輸入

3

2 5 8210

5

樣例輸出

8

5

暴力肯定超時(一開始我試了。。。),但是二分就很容易了

對於一組資料,首先將他排好序,然後開始找,每找到乙個數字,比較一下它與目標key值之間的關係,縮小範圍,

最後會給出兩個數,比較一下那個更加合適,輸出,十分簡單的一道基礎題:

ac:

//一頁 27行就很舒服 

#include#include#include//#include//#include#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define inf 0x3f3f3f3f

#define mod 998244353

//#define max(a,b) (a)>(b)?(a):(b)

//#define min(a,b) (a)<(b)?(a):(b)

#define clean(a,b) memset(a,b,sizeof(a))// 水印

//std::ios::sync_with_stdio(false);

int arr[100010];

bool cmp(int a,int b)

int ans=abs(arr[l]-key)>abs(arr[r]-key)?r:l;

cout<}}

1 11 查詢最接近的元素

在乙個非降序列中,查詢與給定值最接近的元素。第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數。1 m 10000。接下來m行,每行乙個整數,為要詢問最接近...

查詢最接近的元素

總時間限制 1000ms 記憶體限制 65536kb 描述在乙個非降序列中,查詢與給定值最接近的元素。輸入第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數...

查詢最接近的元素

在乙個非降序列中,查詢與給定值最接近的元素。input 第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數。1 m 10000。接下來m行,每行乙個整數,為...