救救蒟蒻吧,36pts样例过了,必关
查看原帖
救救蒟蒻吧,36pts样例过了,必关
1408524
SMZ_smz楼主2025/7/13 21:46
#include <bits/stdc++.h>
using namespace std;
int d[1000010],tail=0; 
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		int op;
		cin>>op;
		if(op==1)
		{
			tail++;
			cin>>d[tail];
			int temp=tail;
			while(true)
			{
				if(temp==1)
					break;
				if(d[temp]<d[temp/2])
				{
					swap(d[temp],d[temp/2]);
					temp/=2;
				}
				else
					break;
			}
		}
		else if(op==2)
			cout<<d[min(1,tail)]<<'\n';
		else if(op==3)
		{
			swap(d[1],d[tail]);
			tail--;
			int temp=1;
			while(true)
			{
				if(temp*2>tail)
					break;
				int left=temp*2,right=-1;
				if(left+1<=tail)
					right=left+1;
				int flag=0;
				if(d[temp]>d[left])
					flag=1;
				if(d[temp]>d[right]&&d[right]>d[left])
					flag=-1;
				if(flag==0)
					break;
				else if(flag==1)
				{
					swap(d[temp],d[left]);
					temp=left;
				}
				else
				{
					swap(d[temp],d[right]);
					temp=right;
				} 
			}
		}
//		for(int i=1;i<=tail;i++)
//			cout<<d[i]<<" \n"[i==tail];
	}
	return 0;
}

写到9:45实在想不出有没有大佬救救我啊

2025/7/13 21:46
加载中...