#P1002. 【入门】起止位置

    ID: 1524 传统题 1000ms 128MiB 尝试: 1 已通过: 1 难度: 2 上传者: 标签>其他二分查找搜索二分入门数组排序

【入门】起止位置

题目描述

nn 位同学按照年龄从小到大排好队。

王老师想要查询,年龄为 xx 的同学,在队伍中首次出现的位置和最后一次出现的位置;如果队伍中不存在年龄为 xx 的同学,请输出 1-1

由于人数太多,一个一个数,太慢啦,请你编程求解。

请注意:本题中王老师查询年龄 xx 出现的起止位置,并不是查询了 11 次,而是查询了 qq 次。

比如:假设有 66 位同学的年龄为:1,2,2,2,3,31,2,2,2,3,3,王老师查询了 44 个年龄,分别是 2,1,3,82,1,3,8,那么:

  • 年龄为 22 的同学首次和最后一次出现的位置分别是:2,42,4
  • 年龄为 11 的同学首次和最后一次出现的位置分别是:1,11,1
  • 年龄为 33 的同学首次和最后一次出现的位置分别是:5,65,6
  • 年龄为 88 的同学首次和最后一次出现的位置分别是:1,1-1,-1

输入格式

第一行包含整数 nnqq,表示队伍中的总人数和询问个数。

第二行包含 nn 个整数(均在 1100001\sim 10000 范围内),表示队伍中每个人的年龄。

接下来 qq 行,每行包含一个整数 xx,表示一次询问的值。

输出格式

qq 行,每行包含两个整数,表示所求年龄在队伍中的起始位置和终止位置。

如果数组中不存在该元素,则返回 -1 -1

样例

6 3
1 2 2 2 3 3
2
1
8
2 4
1 1
-1 -1

数据范围

1n1000001\le n\le 100000

1q100001\le q\le 10000

1x100001\le x\le 10000

来源

二分