起止位置
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
有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
样例解释
根据样例输入:
- 第一次查询年龄为2的同学。在队伍中,年龄为2的同学出现在第2、3、4三个位置。因此,首次出现的位置是2,最后一次出现的位置是4。
- 第二次查询年龄为1的同学。在队伍中,年龄为1的同学只出现在第1个位置。因此,首次和最后一次出现的位置都是1。
- 第三次查询年龄为8的同学。在队伍中没有找到年龄为8的同学,因此输出-1 -1。
数据范围
- 1 ≤ n ≤ 100,000
- 1 ≤ q ≤ 10,000
- 1 ≤ x ≤ 10,000