栈是一种数据结构。现在你要支持几种操作:
-
push x
,将x这个元素放到栈顶。 -
pop
,表示将栈顶的元素删除。 -
query k
,询问从栈顶往下数第k个元素是多少。
输入格式
第一行一个整数m,表示操作个数。
接下来m行,每行一个上面所述的操作。
输出格式
输出若干行,对于每个查询操作,输出答案。
样例输入
10
push 1
push 2
query 1
query 2
push 3
query 1
pop
query 1
push 4
query 1
样例输出
2
1
3
2
4
数据规模
题解
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 1e5+5;
int Stack[N], top = 0;
char tmp[6];
int main(){
int m;
scanf("%d", &m);
while(m--){
scanf("%s", tmp);
if(tmp[2] == 's')
scanf("%d", &Stack[++top]);
else if(tmp[0] == 'q'){
int k;
scanf("%d", &k);
printf("%d\n", Stack[top+1-k]); //从栈顶往下数第k个是减(k-1)
}
else
--top;
}
return 0;
}