描述
在乙個非降序列中,查詢與給定值最接近的元素。
輸入第一行包含乙個整數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行,每行乙個整數,為...