题目描述
数据流里依次到来 个整数。每读入一个,输出当前已读入所有数的中位数:把已读的数从小到大排好,取第 个( 为当前个数,位置从 数起)——奇数个时是正中间,偶数个时是中间两个里较小的那个。
双堆技法:用一个大根堆装较小的一半、一个小根堆装较大的一半,两堆元素个数始终满足「左堆等于右堆,或恰好多 」。中位数就是左堆的堆顶。
输入格式
第一行一个整数 ()。
第二行 个整数 (),依次到来。
输出格式
共 行,第 行一个整数:读入前 个数后的中位数。
样例
输入:
4
5 1 4 2
输出:
5
1
4
2
读入 4 个数后排序为 1 2 4 5,中间偏小的是 2;逐步答案见样例。
数据范围
,。提示:偶数个时答案是左堆堆顶(较小中位)——取到右堆堆顶就是取了较大的那个,偶数步的答案会整体偏大。