堆写炸了Orz
查看原帖
堆写炸了Orz
117658
Space_Gold_Trash楼主2020/6/13 16:20
#include<bits/stdc++.h>
#define N 1000010
using namespace std;
int heap[N],now=0;
inline void push_down(int k){
	int p;
	while(k<<1<=now){
		p=k<<1;
		if(heap[p]>heap[p|1])p|=1;
		if(heap[p]<heap[k])swap(heap[k],heap[p]);
		else break;
		k=p;
	}
}
inline void push_up(int k){
	int p;
	while(k>>1){
		p=k>>1;
		if(heap[k]<heap[p])swap(heap[k],heap[p]);
		k=p;
	}
}
inline void insert(int k){
	heap[++now]=k;
	push_up(now);
}
inline void pop( ){
	swap(heap[1],heap[now--]);
	push_down(1);
}
inline void print( ){
	cout<<heap[1]<<endl;
}
int main( ){
	std::ios::sync_with_stdio(0);
	int s;
	int x;
	int pp;
	cin>>pp;
	while(pp--){
		cin>>s;
		if(s==2)print( );
		else if(s==3)pop( );
		else if(s==1){
			cin>>x;
			insert(x);
		}
	}
}
2020/6/13 16:20
加载中...