应该是最后的取最大值炸了,求一个更快的最大值方法。
#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;
}