#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp=a,a=b,b=temp;
}
struct heap{
int num[1000000]; //存储数据
int sum,now,nxt,nxt1; //总数
bool empty()
{
return sum==0?1:0;
}
void push(int a)
{
num[++sum]=a;
now=sum;
while(now)
{
nxt=now>>1;
if(num[now]<num[nxt])
{
swap(num[now],num[nxt]);
}
else break;
now=nxt;
}
}
void pop()
{
num[1]=num[sum--]; //根节点删除,将尾部的调到第一个位置,然后依次向下更新
now=1;
while((now<<1)<=sum)
{
nxt=now<<1;
nxt1=nxt+1;
if(nxt1<=sum&&num[nxt1]<num[nxt])nxt++;
if(num[now]>num[nxt])swap(num[now],num[nxt]);
else break;
now =nxt;
}
}
void print()
{
for(int i=1;i<=sum;i++)
{
cout<<num[i]<<endl;
}
}
};