堆,wa,求调
  • 板块灌水区
  • 楼主jq_ll19802
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/21 19:15
  • 上次更新2023/11/21 20:54:37
查看原帖
堆,wa,求调
1072786
jq_ll19802楼主2023/11/21 19:15

p3378

#include<bits/stdc++.h>

using namespace std;

#define sc(x) scanf("%lld",&x)

long long n,a,b,d[4000005],id,y,da[4000005],c=2;

void ru()

{
    y=id;
	d[id]=b;
	while(d[y]<d[y/2]&&y/2>0)
	{
		swap(d[y],d[y/2]);
		y/=2;
	}
}

void chu()

{
	y=1;
	swap(d[y],d[id]);
	d[id]=0;id--;
	while(y*2<=id)
	{
		if(d[y*2]<=d[y*2+1]&&d[y]>d[y*2])
		{
			swap(d[y],d[y*2]);
			y*=2;
		}	
		else
		if(d[y]>d[y*2+1]&&d[y*2]>d[y*2+1]&&y*2+1<=id)
		{
			swap(d[y],d[y*2+1]);
			y*=2+1;
		}
        else 
        break;
	}
	
}

int main()
{
	sc(n);
	for(int i=0;i<n;i++)
	{
		sc(a);
		if(a==1)
		{
			sc(b);
			id++;
			ru(); 
		}
		if(a==2)
		{
			printf("%lld\n",d[1]);
			c=2;
		}
		if(a==3)
		{
			chu();
		}
	}
	
	return 0;
}
2023/11/21 19:15
加载中...