44pts求助
查看原帖
44pts求助
941228
mdxz114514楼主2024/10/3 15:51
#include<bits/stdc++.h>
#define ll long long
using namespace std; 
int T,dui[1000006],tail=0,c,temp;
int main(){
	cin>>T;
	while(T--){
		cin>>c;
		if(c==1){
			int x;
			cin>>x;
			dui[++tail]=x;
			temp=tail;
			while(temp>1){
				if(dui[temp]<dui[temp/2]){
					swap(dui[temp],dui[temp/2]);
				}else break;
				temp/=2;
			}
			//for(int i=1;i<=tail;i++)cout<<dui[i]<<' ';
			//cout<<'\n';
		}else if(c==2)cout<<dui[1]<<'\n';
		else{
			//cout<<"tail:"<<tail<<'\n'; 
			swap(dui[1],dui[tail]);
			tail--;
			temp=1;
			while(temp<tail){
				if((temp<<1)+1>tail){
					swap(dui[temp],dui[temp<<1]);
					temp=temp<<1;
					continue;
				}
				if(dui[temp<<1]<dui[(temp<<1)+1]){
					swap(dui[temp],dui[temp<<1]);
					temp=temp<<1;
				}else{
					swap(dui[temp],dui[(temp<<1)+1]);
					temp=(temp<<1)+1;
				}
			}
			//for(int i=1;i<=tail;i++)cout<<dui[i]<<' ';
			//cout<<'\n';
		}
	}
	return 0;
}



2024/10/3 15:51
加载中...