蒜頭君手上有個長度為 nn 的陣列 aa。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問在陣列 aa 中,比 xx 大的最小值是多大?但是這次蒜頭君要求這個數字必須大於 xx,不能等於 xx。
輸入格式
第一行輸入兩個整數 nn 和 mm,分別表示陣列的長度和查詢的次數。
接下來一行有 nn 個整數 a_iai
。接下來 mm 行,每行有 11 個整數 xx,表示蒜頭君詢問的整數。
輸出格式
對於每次查詢,如果可以找到,輸出這個整數。
否則輸出 -1−1。
資料範圍
1 \le n, m \le 10^5, 0 \le x \le 10^61≤n,m≤10
5,0≤x≤106。
輸出時每行末尾的多餘空格,不影響答案正確性
樣例輸入複製
10 5
1 1 1 2 3 5 5 7 8 901
4910樣例輸出複製12
5-1-1本題兩個地方可以進行優化,1:如果x小於a[0],直接輸出a[0],如果x>=a[n-1],直接輸出-1, 2:用scanf和printf優化cin 和cout
//@author:hairu,wu
//@from:ahut
#include
#include
using
namespace std;
int n,m;
int a[
1000000];
intmain()
sort
(a,a+n)
;for
(int i=
0;i(x>=a[n-1]
)int ans=-1
;int left=
0,right=n-1;
while
(left<=right)
else
}printf
("%d\n"
,ans);}
return0;
}
計蒜客 尋找插入位置 (二分查詢)
給定乙個已經公升序排好序的陣列,以及乙個數 target,如果 target在陣列中,返回它在陣列中的位置。否則,返回 target插入陣列後它應該在的位置。假設陣列中沒有重複的數。以下是簡單的示例 1,3,5,6 5 2 1,3,5,6 2 1 1,3,5,6 7 4 1,3,5,6 0 0 輸入...
D 二分查詢(二) 計蒜客 T1561
題目描述 蒜頭君手上有個長度為 n 的陣列 a。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問在陣列 a 中,大於等於 x 的最小值是多大?輸入格式 第一行輸入兩個整數 n 和 m,分別表示陣列的長度和查詢的次數。接下來一行有 n 個整數 ai 接下來 m 行,每行有...
計蒜客T1156 查詢最近的元素 二分
題目貼上 在乙個非降序列中,查詢與蒜頭君的給定值最接近的元素。輸入格式 第一行包含乙個整數 n,為非降序列長度。1 n 100000。第二行包含 n 個整數,為非降序列各元素。所有元素的大小均在 0 1,000,000,000 之間。第三行包含乙個整數 m,為要詢問的給定值個數。1 m 10000。...