#2314. 【模板】二分查找

【模板】二分查找

题目描述

给定一个长度为 nn 的不降数列,分别是a1,a2,a3,a4,a5ana_1,a_2,a_3,a_4,a_5……a_n,确保数组下标为 1n1-n

不降数列:确保对于任意的 (2in2 \leq i \leq n),ai1aia_{i-1} \leq a_i恒成立

现在需要按要求进行 qq 次查询。规定如下 44 种查询方案。

  • 1 k:查找小于 kk 的数字中,位置最大为多少。
  • 2 k:查找小于等于 kk 的数字中,位置最大为多少。
  • 3 k:查找大于 kk 的数字中,位置最小为多少。
  • 4 k:查找大于等于 kk 的数字中,位置最小为多少。

上述查询如果没有找到符合条件的位置则输出-1

输入格式

第一行,两个的整数,分别是 nnqq

第二行,nn 个整数,a1,a2,a3,a4,a5ana_1,a_2,a_3,a_4,a_5……a_n

接下来 qq 行,每行两个整数,分别是查询方案 opopkk

输出格式

qq 行,每行一个整数代表符合条件数字所在的下标。

样例数据

5 6
3 8 8 10 13
1 8
2 8
3 8
4 8
2 1
3 13
1
3
4
2
-1
-1

数据范围

对于100% 100\% 数据,1n,q1061 \leq n,q \leq 10^6 1ai,k1091 \leq a_i,k \leq 10^9