后三点全T求助!
查看原帖
后三点全T求助!
815503
Miyako_kujo楼主2023/2/24 17:22

应该是最后的取最大值炸了,求一个更快的最大值方法。

#include<bits/stdc++.h>
using namespace std;
stack<long long>s;
long long n;
long long a[200005],b[200005],c[200005];
int main()
{
	scanf("%lld",&n);
	int kkk=0;
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&b[i]);
		if(b[i]==0)
		{
			scanf("%lld",&c[i]);
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			kkk+=1;
			a[kkk]=c[i];
			s.push(kkk);
		}
		else if(b[i]==1)
		{
			a[s.top()]=-1;
			s.pop();
		}
		else if(b[i]=2)
		{
			if(s.empty())
			{
				cout<<0<<"\n";
			}
			else
			{
				int ans=0;
				for(int i=1;i<=s.top();i++)
				{
					if(a[i]>=ans)
					{
						ans=a[i];
					}
				}
				cout<<ans<<"\n";
			}
		}
	}
	return 0;
}
2023/2/24 17:22
加载中...