G. 二分查找-类型7(查找小于等于k的最后一个位置)

    传统题 1000ms 256MiB

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

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

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

输入格式

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

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

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

输出格式

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

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

样例解释

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

  • 查询 k=4k=4,最后一个小于等于 44 的是 44,位置 44
  • 查询 k=0k=0,没有小于等于 00 的元素,输出 1-1
  • 查询 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

编程素养挑战赛___复赛集训3

未认领
状态
已结束
题目
18
开始时间
2026-7-10 0:00
截止时间
2026-8-22 23:59
可延期
24 小时