Black Box
题意翻译
Description
我们使用黑匣子的一个简单模型。它能存放一个整数序列和一个特别的变量i。在初始时刻,黑匣子为空且i等于0。这个黑匣子能执行一系列的命令。有两类命令:
ADD(x):把元素x放入黑匣子;
GET:把i加1的同时,输出黑匣子内所有整数中第i小的数。牢记第i小的数是当黑匣子中的元素已非降序排序后位于第i位的元素。
下面是一个11个命令的例子:
编号 命令 i 黑匣子内容 输出
1 ADD(3) 0 3
2 GET 1 3 3
3 ADD(1) 1 1,3
4 GET 2 1,3 3
5 ADD(-4) 2 -4,1,3
6 ADD(2) 2 -4,1,2,3
7 ADD(8) 2 -4,1,2,3,8
8 ADD(-1000) 2 -1000,-4,1,2,3,8
9 GET 3 -1000,-4,1,2,3,8 1
10 GET 4 -1000,-4,1,2,3,8 2
11 ADD(2) 4 -1000,-4,1,2,2,3,8
现需要一个有效的算法处理给定的一系列命令。ADD和GET命令的总数至多个有30000个。
定义ADD命令的个数为M个,GET命令的个数为N个。
我们用下面得两个整数序列描述命令序列:
1.A(1),A(2),……,A(M):加入黑匣子的元素序列。所有的数均为绝对值不超过2000000的整数。例如在上例中A=(3,1,-4,2,8,-1000,2)。
2.u(1),u(2),……,u(N):u(i)表示第i个GET命令在第u(i)个ADD命令之后,例如在上例中,u=(1,2,6,6)。
你可以假定自然数序列u(1),u(2),……,u(N)以非降序排列,N≤M,且对于每一个p(1≤p≤N)有p≤u(p)≤M
现在要求找出对于给定的命令串的最好的处理方法。ADD 和 GET 命令分别最多有30000个。
现在用两个整数数组来表示命令串:
1. A(1), A(2), ..., A(M): 一串将要被放进Black Box的元素。每个数都是绝对值不超过2 000 000 000 的整数
M <= 30000。例如上面的例子就是A=(3, 1, -4, 2, 8, -1000, 2).
2. u(1), u(2), ..., u(N): 表示第u(j)个元素被放进了Black Box里后就出现一个GET命令。例如上面的例子中u=(1, 2, 6, 6).
输入数据不用判错。
Input
题目有多组输入数据!
第一行是一个表示输入组数的整数 N ,隔一空行之后是 N 组输入数据,每组输入数据之间都有一行空行隔开,各组数据都是按上面的形式输入。
Output
输出包含 N 组输出数据,每一组之间用一个空行隔开。
题目描述
[problemUrl]: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=442
[PDF](https://uva.onlinejudge.org/external/5/p501.pdf)
![](https://cdn.luogu.com.cn/upload/vjudge_pic/UVA501/794b727ccb5ae482ad64212b50510c376fee2c00.png)
输入输出格式
输入格式
![](https://cdn.luogu.com.cn/upload/vjudge_pic/UVA501/22341cc0cdd3d3aa9d0c86c70a624c5a02117097.png)
输出格式
![](https://cdn.luogu.com.cn/upload/vjudge_pic/UVA501/7b4826284c0211aac4098a4fcc19e73f1d9717fc.png)
输入输出样例
输入样例 #1
1
7 4
3 1 -4 2 8 -1000 2
1 2 6 6
输出样例 #1
3
3
1
2