#P5266. 二分查找-类型6(查找小于k的最后一个位置)

二分查找-类型6(查找小于k的最后一个位置)

题目描述

有一个有序且升序的数组,数组长度为 nn。现在有 qq 次查询,每次查询给定一个整数 kk,请你输出数组中最后一个小于 kk 的元素的位置(下标从 11 开始)。如果不存在这样的元素,则输出 1-1

输入格式

第一行包含两个整数 nnqq,分别表示数组长度和查询次数。

第二行包含 nn 个整数,表示数组中的元素,保证数组升序排列。

接下来 qq 行,每行一个整数 kk,表示一次查询。

输出格式

对于每次查询,输出一行一个整数,表示最后一个小于 kk 的元素的位置(下标从 11 开始)。如果不存在,输出 1-1

5 3
1 2 3 4 5
-1
3
6
-1
2
5

样例解释

数组为 [1, 2, 3, 4, 5]

  • 查询 k=1k=-1,没有小于 1-1 的元素,输出 1-1
  • 查询 k=3k=3,最后一个小于 33 的是 22,位置 22
  • 查询 k=6k=6,最后一个小于 66 的是 55,位置 55

数据范围与提示

  • 1n2×1051 \le n \le 2 \times 10^51q2×1051 \le q \le 2 \times 10^5
  • 数组中每个元素以及 kk 的范围均为 109-10^910910^9