16分求调
查看原帖
16分求调
1683435
tyt123楼主2025/6/25 14:31
#include<iostream>
#include<algorithm>
using namespace std;
long long n,a[(int)1e6+10],cnt,i;
void up(long long x){
	if(x/2!=0&&a[x/2]>a[x]) swap(a[x/2],a[x]),up(x/2);
}
void down(long long x){
	long long v=x;
	if(x*2<=cnt&&a[x]>a[x*2]) v=x*2;
	if(x*2+1<=cnt&&a[v]>a[x*2+1]) v=x*2+1;
	if(v!=x) swap(a[v],a[x]),down(v);
}
int main(){
	cin>>n;
	while(n--){
		int x;
		cin>>x;
		if(x==1){
			i++;
			cnt++;
			int yyy;
			cin>>yyy;
			a[i]=yyy;
			up(i);
		}
		if(x==2){
			cout<<a[1]<<"\n";
		}
		if(x==3){
			swap(a[1],a[cnt]);
			cnt--;	
			down(1);
		}
	}
}
2025/6/25 14:31
加载中...