#10043. 双向队列

双向队列

题目描述

我们定义一个​**双端队列(deque),它支持:

  • ​左进队(LIN X)​:把整数 XX 插入到队列左端;
  • ​右进队(RIN X)​:把整数 XX 插入到队列右端;
  • ​左出队(LOUT):将左端的元素出队;
  • ​右出队(ROUT):将右端的元素出队。

给定一系列操作,请模拟执行。若某条命令非法(如试图在空队列中出队),请输出错误信息。


输入格式

  • 第 1 行:一个整数 MM,表示命令总数,1M100001 \le M \le 10000
  • 第 2~(M+1) 行:每行一条命令,可能为 LIN XRIN XLOUTROUT

输出格式

  • 第 1 行:输出 M 次操作之后队列的最终状态,从左到右输出,元素之间用空格隔开。如果队列为空则输出空行;
  • 之后每条不合法的命令,输出形如 X ERROR 的信息,其中 X 为这条命令的编号(从 1 开始)。

样例输入

8
LIN 5
RIN 6
LIN 3
LOUT
ROUT
ROUT
ROUT
LIN 3

样例输出

3
7 ERROR

🧠 提示:

  • 使用 getline() 结合 stringstream 方便处理含参数和不含参数的命令。
  • 所有非法情况(出空队列、参数缺失、命令拼写错误)都会记录并输出编号。