维护一个最大堆和一个最小堆, 首先先将前两个元素中较大的加入最小
堆,较小的加入最大堆。然后每次添加新元素的时候,先将其与最大堆和最小堆的堆顶进行对比,
如果其大于最小堆堆顶则插入最小堆,如果其小于最大堆堆顶则插入最大堆,否则选择元素数量
较小的一堆。 在插入与向上调整结束后, 如果两堆的元素数量差大于 1(即为 2),则从元素数量
较多的一堆中取出堆顶插入另一堆,两堆相应进行向下向上调整,这样可以保证两堆元素数量始
终是平衡的。 在这种情况下,选取中位数只需要选取元素数量多 1 的一堆的堆顶,或者两堆元素
数量相同的时候选择两堆堆顶的平均数即可。
# include<iostream>
# include<queue>
using namespace std