Problem1550--最大栈

1550: 最大栈

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 104  Solved: 29
[Submit] [Status] [Web Board] [Creator:]

Description

设计一个最大栈的数据结构,支持栈的push,pop,top操作,并且可以用O(1)的时间复杂度查询到栈中最大的元素。
操作1: void push(int val); //往栈顶加入元素val
操作2: void pop(); //删除栈顶元素,若栈为空则不进行操作
操作3: int top(); //返回栈顶元素的值,若栈为空返回-1
操作4: int getMax(); //返回栈中最大元素的值,若栈为空返回-1

Input

第一行输入操作次数m(1<m<=1e5)。
接下来m行,首先输入一个字符串op代表操作加入栈顶还是删除栈顶(只可能为push或者pop),
若op=="push"则再输入一个正整数val代表往栈顶添加的元素值。


Output

对于每次操作,输出调用top()和getMax()的结果。

Sample Input

6
push 4
push 3
push 5
pop
pop
pop

Sample Output

4 4
3 4
5 5
3 4
4 4
-1 -1

Source/Category