#1038. 栈的最小值(简单的单调栈)

栈的最小值(简单的单调栈)

Description

若数组lst中有Maxn个元素,对应索引为0..Maxn-1,用该数组构建栈方法如下:

(1)栈空条件:top=-1

(2)入栈操作:更新栈顶指针位置,然后放置数据:top=top+1; lst[top]=x

(3)栈满处理:当栈顶指针top==Maxn-1时栈满!此时不能再放数据在栈中。

说明:

当执行入栈操作时,若栈已满,则输出"ERR full!",直接结束后面操作;

当执行出栈操作时,若栈为空,则输出"ERR empty!",直接结束后面操作;

当对栈进行询问时,若栈非空,则输出栈中最小值,若为空栈,则输入"None!",后面操作继续执行。

Format

Input

输入数据共两行:

第一行为一个整数n,描述数组的大小;

第二行为一行字符,描述入栈和出栈:

其中字符“I”表示入栈,后面数据表示入栈元素;

字符“O”表示出栈,输出栈顶数据。

字符"Q"表示询问,输出栈中最小值,若栈为空栈,则输入"None!"

Output

一行,多个数据 (输出的数据若有多个,则用”,“间隔) ERR full!

Samples

4
I,6,I,7,I,3,I,11,Q,O,Q,O,Q,I,4,I,9,Q,I,17
3,11,3,3,6,4,ERR full!

Limitation

1s, 1024KiB for each test case.

说明:本题询问操作要求时间复杂度为O(1)