题意:按要求输出所给序列中第k小的数
解题思路:维护两个优先队列,一个最小堆,一个最大堆,最终想要的效果是每次输入就是弹出最小堆中的最小值就是所要的值,也就是说比最小值还要小的值,被想办法放到了别处(不能直接去掉,因为后面可能还会用到)。逆向思路是,每次输出完的那个数,把它放进最大堆中,在求第k个最小值时,前k个数都压进最小优先队列,如果最大优先队列不为空,就把最大值拿出来和最小优先队列的最小值比较,如果最小值小于最大值则交换。循环,这样最小堆的最小值就是第k小的数。
Description
Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empty and i equals 0. This Black Box processes a sequence of commands (transactions). There are two types of transactions:
ADD(x): put element x into Black Box;