Description
给定一个长度为 n 的数列 a,其中的整数互不相同,且从小到大依次排列,下标从 1 开始。
给定 m 次询问,对每次询问,给定一个整数 x 取自数列 a,输出 x 在 a 中的下标。
现希望你实现二分查找函数 get(a, x, l, r) 完成上述目标,函数返回一个整数 pos,表示 x 在 a[l……r] 中的下标。
函数内部实现如下:
1、若 l == r,则 l 即 x 在 a[l……r] 中的下标,返回 l。
2、设 mid = (l + r) / 2,若 a[mid] ≥ x,则 x 在 a[l……mid] 中,返回 get(a, x, l, mid)。
3、否则 x 在 a[mid+1……r] 中,返回 get(a, x, mid+1, r)。
Input
输入第一行包含两个整数,依次为 n 和 m,分别表示数列 a 的长度以及询问的次数。(1 ≤ n, m ≤ 106)
第二行包含 n 个整数,表示数列 a。(-109 ≤ ai ≤ 109,且 a1<a2<……<an)
接下来 m 行,每行包含一个整数 x,即询问的 x。(x ∈ {a1, a2, ……, an})
同一行的整数之间用一个空格隔开。文件以EOF结束。
Output
每组输出一行,包含一个整数,为 x 在 a[l……r] 中的下标
10 3
2 4 6 8 10 11 13 15 19 20
8
13
20