C++最大堆出入堆、排序输出问题

【问题描述】
构建一个最大堆,完成出堆和入堆操作,并输出出堆值的序列,可以使用STL或PBDS库中的优先队列或自己手写堆。
【输入形式】
输入n+1行:
第1行为一个小于1000的整数n
接下来n行,每行为一个整数,如果该数为0,则表示出堆,测试数据保证此时堆中一定还有数据;
如果为大于0的整数,则表示把该数入堆;
【输出形式】
假设数字为0的行数为k行。需要输出一行k个整数,空格分隔,每一个整数对应的是输入为0时出堆的数字。