2390: deque

内存限制:128 MB 时间限制:1 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:1 通过:1

题目描述

众所周知,学数据结构一定会学到栈和队列,
那么我们一定会想到为啥只能在最后面加入数据呢。
能不能有一种数据结构可以在前面也加入数据呢?
答案是当然有啊,双端队列就是这样的一个数据结构。
但是stl库中的实现太过复杂了,现在我们希望获得一个简单一点的双端队列,并且可以随时获得队列中我们想要的值
Occult忙于升级卡片,zhourist正在和xiang578博弈,所以现在由你来解决。
给出五种操作:
push_top x
在队列最后加入一个数x
push_front x
在队列前面加入一个数x
pop_top
删除队列最后面的数
pop_front
删除队列最前面的数
query y
输出队列中第y小的数

x属于[0,2^31)。询问时保证队列中一定有数字。询问保证合法,保证一定有输出。

【知识拓展】
队列中第y小的数指的是:将队列中所有元素从小到大排序之后的第y个元素
例如:3 3 2,第1小的是2,第2小的是3,第3小的是3


输入格式

多组测试数据。
每一组第一行一个n,表示有n个操作,n<=6000。
接下来n行,每行一个操作。

输出格式

对应于每个query,输出一个整数,代表答案

输入样例 复制

5
push_front 1
push_top 3
query 2
push_front 2
query 2

输出样例 复制

3
2