起止位置

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

题目描述

有n位同学按照年龄从小到大排好队。 王老师想要查询,年龄为x的同学,在队伍中首次出现的位置和最后一次出现的位置;如果队伍中不存在年龄为x的同学,请输出-1。 由于人数太多,一个一个数,太慢啦,请你编程求解。 请注意:本题中王老师查询年龄x出现的起止位置,并不是查询了1次,而是查询了q次。

例如: 假设有6位同学的年龄为:1 2 2 2 3 3,王老师查询了3个年龄,分别是2、1、8,那么:

  • 年龄为2的同学首次和最后一次出现的位置分别是:2 4;
  • 年龄为1的同学首次和最后一次出现的位置分别是:1 1;
  • 年龄为8的同学首次和最后一次出现的位置分别是:-1 -1。

输入格式

第一行包含整数n和q,表示队伍中的总人数和询问个数。 第二行包含n个整数(均在1~10000范围内),表示队伍中每个人的年龄。 接下来q行,每行包含一个整数x,表示一次询问的值。

输出格式

共q行,每行包含两个整数,表示所求年龄在队伍中的起始位置和终止位置。 如果数组中不存在该元素,则返回 -1 -1

样例输入

6 3
1 2 2 2 3 3
2
1
8

样例输出

2 4
1 1
-1 -1

样例解释

根据样例输入:

  1. 第一次查询年龄为2的同学。在队伍中,年龄为2的同学出现在第2、3、4三个位置。因此,首次出现的位置是2,最后一次出现的位置是4。
  2. 第二次查询年龄为1的同学。在队伍中,年龄为1的同学只出现在第1个位置。因此,首次和最后一次出现的位置都是1。
  3. 第三次查询年龄为8的同学。在队伍中没有找到年龄为8的同学,因此输出-1 -1。

数据范围

  • 1 ≤ n ≤ 100,000
  • 1 ≤ q ≤ 10,000
  • 1 ≤ x ≤ 10,000

王老师_区赛复习6_二分查找

未认领
状态
已结束
题目
17
开始时间
2025-11-29 0:00
截止时间
2026-1-10 23:59
可延期
24 小时