萌新求助,为何RE
查看原帖
萌新求助,为何RE
315191
P31pr楼主2020/10/2 10:00

评测记录

#include<iostream>
using namespace std;
int swap(int &x,int &y)
{
	int t=x;
	x=y;
	y=t;
}
struct Heap
{
	int len;
	int arr[1000001];
	void put(int x)
	{
		arr[++len]=x;
		int cur=len,fa=cur>>1;
		while(cur>1)
		{
			if(arr[fa]>arr[cur]) swap(arr[fa],arr[cur]);
			else break;
			cur=fa;
			fa=cur>>1;
		}
	}
	int get()
	{
		return arr[1];
	}
	void del()
	{
		swap(arr[1],arr[len]);
		len--;
		int cur=1,son=cur<<1;
		while(cur<len)
		{
			if(arr[son+1]<arr[son]) son++;
			if(arr[son]<arr[cur]) swap(arr[son],arr[cur]);
			else break;
			cur=son;
			son=cur<<1;
		}
	}
}heap={0,{0}};
int main()
{
	int n,op,x;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>op;
		if(op==1) {cin>>x;heap.put(x);}
		if(op==2) cout<<heap.get();
		if(op==3) heap.del();
	}
	return 0;
}
2020/10/2 10:00
加载中...