#4992. 小绿的双端队列

小绿的双端队列

小绿的双端队列

  • 时间限制:1.0 s
  • 内存限制:512.0 MB

题目描述

小绿学会了一个叫做 deque(双端队列)的容器。deque 可以在一头(队头 front)和一尾(队尾 back)同时进行插入和删除操作。

现在给你一个初始为空的 deque,请你按照顺序执行 n 条指令,并按要求输出结果。每条指令是下面的一种:

  • push_back x:在队尾加入一个整数 x。
  • push_front x:在队头加入一个整数 x。
  • pop_back:删除队尾的整数。若队列为空,输出 error。
  • pop_front:删除队头的整数。若队列为空,输出 error。
  • query_back:输出队尾的整数。若队列为空,输出 error。
  • query_front:输出队头的整数。若队列为空,输出 error。

注意:执行 pop / query 指令时,如果队列为空,只输出 error,并继续执行下一条指令。

输入格式

第一行一个整数 n,表示指令条数。

接下来 n 行,每行一条指令,格式如题目描述所示。

输出格式

按顺序输出每条需要输出的指令的结果,一行一个。若某条指令不需要输出(如 push),则不输出任何内容。

输入样例

7
push_back 3
push_front 1
query_front
query_back
pop_front
pop_back
query_front

输出样例

1
3
error

提示

  • 使用 #include <deque> 引入双端队列。
  • 常用成员:push_back、push_front、pop_back、pop_front、front、back、empty。
  • 注意空队列判断,使用 empty() 检查队列是否为空。
  • 数据范围:1≤n≤1000001 \le n \le 100000,0≤x≤1090 \le x \le 10^9。