#12070. 双端队列操作

双端队列操作

📘 题目名称:双端队列操作


🧾 题目描述

你需要模拟一个简单的双端队列,支持如下三种操作:

  • PUSH_LEFT X:将整数 X 插入队列左端;
  • PUSH_RIGHT X:将整数 X 插入队列右端;
  • POP:从队列左端弹出一个元素。

请按顺序执行这 M 条操作,并输出最终队列内容。 若某次操作非法(如试图在空队列执行 POP,或命令拼写错误、缺少参数),请记录并输出该命令的编号和错误提示。


📥 输入格式

  • 第一行一个整数 M(1 ≤ M ≤ 10000),表示操作条数。
  • 接下来的 M 行,每行一条命令,可能是:
    • PUSH_LEFT X
    • PUSH_RIGHT X
    • POP

📤 输出格式

  • 第一行输出队列中剩余的所有元素,从左到右,用空格隔开。如果队列为空,则输出空行。
  • 之后每行输出一个错误信息,格式为: X ERROR,表示第 X 条命令是非法的(编号从 1 开始)。

💡 样例输入

6
PUSH_LEFT 1
PUSH_RIGHT 2
PUSH_LEFT 3
POP
POP
POP

📌 样例输出

1
6 ERROR

🧠 提示

  • 所有非法情况包括:
    • 在空队列上执行 POP
    • 命令拼写错误
    • 缺少参数
  • 建议使用 std::getline() 读取整行,再配合 std::stringstream 分析命令与参数。