#include<stdio.h>
#include<string.h>
struct Heap{
int s[100005],siz;
int top(){
return s[1];
}
void clear(){
memset(s,0,sizeof(s));
siz=0;
}
int size(){
return siz;
}
void push(int k){
int now=++siz,tmp;
s[now]=k;
while(now>1){printf("%d.",now);
if(s[now/2]<s[now])
tmp=s[now/2],s[now/2]=s[now],s[now]=tmp;
else break;
now/=2;
}
}
void pop(){
int now=1,tmp;
s[1]=s[siz],s[siz--]=0;
while(now*2<=siz){
if(s[now*2]>s[now*2+1] && s[now*2]>s[now])
tmp=s[now],s[now]=s[now*2],s[now*2]=tmp;
else if(s[now*2+1]>s[now*2] && s[now*2+1]>s[now])
tmp=s[now],s[now]=s[now*2+1],s[now*2+1]=tmp;
else break;
now*=2;
}
}
};
Heap s;
int main(){
s.clear();
int t,n;
while(scanf("%d",&t)!=EOF){
if(t==1){
scanf("%d",&n);
s.push(n);
}
if(t==2)
s.pop();
if(t==3)
printf("%d\n",s.top());
if(t==4)
printf("%d\n",s.size());
}
}
沒有留言:
張貼留言