求调!!!
查看原帖
求调!!!
1285021
Gan2024楼主2024/8/30 14:08

代码如下:

#include <bits/stdc++.h>
using namespace std;

int cnt,n,m,a[1000010],x;

void f(int x){
	while(x!=1 && a[x]<a[x/2]){
		swap(a[x],a[x/2]);
		x/=2;
	}
}

void d(int x){
	if(a[x*2]!=0&&a[x*2+1]!=0&&x*2<=cnt){
		if(min(a[x*2],a[x*2+1])==a[x*2]){
			swap(a[x],a[x*2]);
			d(x*2);
		}
		else{
			swap(a[x],a[x*2+1]);
			d(x*2+1);
		}
	}
	else if(a[x*2]!=0&&x*2<=cnt){
		swap(a[x],a[x*2]);
		d(x*2);
	}
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>m;
		if(m==1){
			cin>>x;
			cnt++;
			a[cnt]=x;
			f(cnt);
		}
		if(m==2){
			cout<<a[1]<<endl;
		}
		if(m==3){
			swap(a[1],a[cnt]);
			cnt--;
			d(1);
		}
	}
	return 0;
}

只有44分。

2024/8/30 14:08
加载中...