81502 - Floyd 建堆算法

通过次数

0

提交次数

0

时间限制 : 1 秒
内存限制 : 128 MB

请实现一个小根堆,根节点的下标为1,堆初始为空,并实现以下几种功能:

1.pop 删除堆顶元素,并重新维护至小根堆,保证堆不为空

2.insert x a1 a2 ...ax ,把a1 a2 ... ax直接加入数组的尾部,并对数组重新进行Floyd 建堆算法

3.print x,输出数组中下标为x的元素,保证堆中元素数量大于等于x

输入

输入第一行n,表示操作的数量

输出

对于所有操作3,输出一行,每行一个数字

样例

输入

10
insert 6 1 1 4 5 1 4
pop
print 2
print 4
pop
insert 4 1 9 1 9
print 3
pop
pop
print 3

输出

1
5
1
4

提示

1 \leq n,x\leq 1000, 1 \leq a_i \leq 10^9

如果两个叶子节点均优于父节点且两个叶子节点相等,那么请选择左儿子与父节点交换

来源

原创