本地ac 洛谷TLE?
#include<bits/stdc++.h>
using namespace std;
int heap[1000005];
int n;
long long ans;
int t;
int insert(int p)
{
while(p>=2)
{
int k=floor(p/2.0);
if(heap[k]>heap[p])
swap(heap[k],heap[p]),p=k;
else
break;
}
}
int hou(int q)
{
while(q<=n)
{
if(heap[q*2]<heap[q*2+1])
{
if(heap[q*2]<heap[q])
swap(heap[q*2],heap[q]),q=q*2;
else
break;
}
else
{
if(heap[q*2+1]<heap[q])
swap(heap[q*2+1],heap[q]),q=q*2+1;
else
break;
}
}
}
int main()
{
scanf("%d",&t);
memset(heap,127,sizeof(heap));
while(t--)
{
int bj=0;
scanf("%d",&bj);
if(bj==1)
{
int a;
scanf("%d",&a);
n++;
heap[n]=a;
insert(n);
}
else if(bj==2)
{
printf("%d\n",heap[1]);
}
else
{
heap[1]=INT_MAX;
swap(heap[1],heap[n]);
n--;
hou(1);
}
}
}