Description
黑盒子代表一个原始数据库,保存一个整数数组和一个特殊的i 变量。
在最初的时刻,黑盒子是空的,i=0。
黑盒子处理一系列命令(事务),有以下两种类型的事务。
- ADD(x ):将元素 x 放入黑盒子。
- GET:将 i 增加 1,并给出包含在黑盒子中的所有整数中第 i 小的值。第 i 小的值是黑盒子中按非降序排序后的第 i 个位置的数字。
示例如下。
写一个有效的算法来处理给定的事务序列。ADD 和GET 事务的最大数量均为 30000。用两个整数数组来描述事务的顺序。
(1)A(1),A(2),…,A(M):包含在黑盒子中的一系列元素。A 值是绝对值不超过 2000000000 的整数,M≤30000 。对于示例,序列A=(3,1,−4,2,8,−1000,2)。
(2)u(1),u(2),…,u(N):表示在第 1 个,第 2 个,…,第 N 个 GET 事务时包含在黑盒子中的元素个数。对于示例,u=(1,2,6,6)。
假设自然数序列 u(1),u(2),…,u(N) 按非降序排序,N≤M 且
每个p(1≤p≤N) 对不等式 p≤u(p)≤M 都有效。由此得出这样
的事实:对于 u 序列的第 p 个元素,执行 GET 事务,给出 A(1),A(2),…,A(u(p))序列第 p小的数。
输入包含M,N,A(1),A(2),…,A(M),u(1),u(2),…,u(N)。
Output
根据给定的事务顺序输出答案序列,每行一个数字
Samples
7 4
3 1 -4 2 8 -1000 2
1 2 6 6
3
3
1
2
来源
POJ1442