已知一个已经排好序的序列,不妨认为是从小到大排序的整数序列,想知道一个整数x是否在该序列中,可以采用二分查找的策略:先让x与序列中间的那个整数比较,如果相等,表明已经找到;如果x小于中间的整数,则在小于中间整数的序列部分中查找;如果x大于中间的整数,则在大于中间整数的序列部分中查找。
从标准输入中读取输入,分为若干行。第一行为一个整数N,0<N<=50,第二行为N个已经按从小到大排好序的整数,这些整数各不相同,且大小在[-1000,1000]范围内。第三行是一个整数M,0<M<=10表示有M个数要查找,之后的M行每行一个整数,表示要查找的数(大小也在[-1000,1000]范围内,但可能未出现在序列中)。
输出到标准输出,共有M行,每行一个数,依次对应每个待查找的数在序列中查找的次数。每次待查找数与某个数做比较就算一次查找。注意,与中间整数的比较要考虑大于、小于、等于等不同的情况,但由于是和同一个数做比较,只算一次查找。另外规定,当待查找的序列部分共有2k+1(k为整数)个数时,中间的数为第k+1个数;当待查找的序列部分共有2k个数时,中间的数为第k个数。
[输入样例]
10
1 2 3 4 5 6 7 8 9 10
3
5
6
11
[输出样例]
1
3
4
[样例说明]
待查找数是5时,第一次查找就找到。待查找数是6时,第一次查找结果是大于中间数5,因此在6、7、8、9、10中查找;第二次查找结果是小于中间数8,因此在6、7中查找;第三次查找找到。待查找数是11时,第一次查找结果是大于中间数5,因此在6、7、8、9、10中查找;第二次查找结果是大于中间数8,因此在9、10中查找;第三次查找结果是大于中间数9,因此在10中查找;第四次查找,没有找到,且没有更多序列部分可比较。