#336. 记忆水晶

记忆水晶

题目描述

在遥远的幻想王国中,公主被邪恶巫师囚禁在了一个复杂的迷宫深处。勇敢的骑士决定踏上征途,解救公主。但迷宫中布满了陷阱和谜题,为了顺利通过,骑士需要利用一种特殊的“记忆水晶”来帮助他记录路径上的关键信息,并找到最短的逃生路线。

这个“记忆水晶”具有神奇的能力,可以模拟成一个栈(Stack),支持三种操作:

  1. ​push(x)​: 当骑士进入一个房间时,他会记录下房间的危险等级(假设用整数表示,数值越小表示越安全),并将其“push”到水晶中。
  2. ​pop(): 当骑士离开一个房间时,他会从水晶中“pop”出该房间的危险等级,作为回忆的一部分。
  3. ​getMin()​: 骑士随时需要知道自己经过的房间中,哪个是最安全的(即危险等级最低的房间),以便在必要时选择返回。因此,他需要“getMin”操作来查询当前栈中的最小值。

输入

第一行输入一个整数n,表示操作的次数。

接下来n行,每行输入1个操作。每个操作格式如下

操作1:push ,x 表示一个骑士进入了危险等级为x的房间。

操作2:pop , 表示一个骑士离开房间;如果没有骑士在房间里则该操作无效。

操作3:getmin,表示获取当前最安全的房间危险等级。如果没有骑士在房间里则该操作无效,输出-1;。

输出

对于每次执行getmin操作时的结果。

8
push 3
push 2
push 1
push 4
getmin
pop
pop
getmin
1
2
13 
pop
push 9
pop
push 6
pop
push 5
push 1
pop
push 4
getmin
pop
push 2
getmin
4
2

数据范围

1n21051\le n \le 2*10^5

1x1051\le x \le 10^5