思路:
题目大意:我们可以把题目看成一个栈,而题目的要求就是在这个栈里面进行入栈、出栈和查询的工作。
解题思路:我们设f[i]为栈中从下到上的i个元素中的最大值,当我们加入一个新元素x时,t++,由于多了一个元素,所以f[t]=max(f[t-1],x)。那么在出栈时只要输出f[t-1],在查找时只要输出f[t]。
ACcode:
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;
const int N=2e5+20;
int sta[N],t,n,x,op;
void solve() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>op;
if(op==0){
cin>>x;
t++;
sta[t]=max(sta[t-1],x);
}
else if(op==1) {
if(t>0)t--;
}
else{
cout<<sta[t]<<"\n";
}
}
}
signed main() {
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int tt=1;
//cin>>tt;
while(tt--) solve();
return 0;
}
over~