P3378 44pts求助
  • 板块灌水区
  • 楼主mdxz114514
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/3 15:55
  • 上次更新2024/10/3 18:10:57
查看原帖
P3378 44pts求助
941228
mdxz114514楼主2024/10/3 15:55

听灌多

#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:55
加载中...