E. 2023夏-B-5 用两个栈实现队列

    传统题 400ms 64MiB

2023夏-B-5 用两个栈实现队列

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

一个队列(先进先出结构)可以用两个堆栈(后进先出结构)来实现,方法如下:

  1. 从两个空堆栈 s1s_1s2s_2 开始。
  2. 当元素 ee 入队时,它实际上是被推入到 s1s_1
  3. 当我们需要出队时,首先检查 s2s_2。如果 s2s_2 是空的,则把 s1s_1 中的元素全部导入 s2s_2,即将每个元素从 s1s_1 弹出后马上推入 s2s_2。然后从 s2s_2 中弹出元素 —— s2s_2 顶端元素一定是第一个进入 s1s_1 的,所以是应该出列的第一个元素。

假设每个堆栈的推入和弹出操作都用 1 个单位时间,请你给出每个出队操作所花的时间。

输入格式

输入首先在一行中给出一个正整数 NN103\le 10^3),是操作数量。随后 NN 行,每行按以下格式给出一个操作:

操作 元素

其中 操作 或者是 I 表示入队,或者是 O 表示出队。每个 I 后面跟的 元素 是一个不超过 10610^6 的正整数。O 操作后面不跟任何元素。 题目保证至少有一个 O 操作。

输出格式

对每个出队操作,在一行中输出出队的那个元素和这出队操作所花费的单位时间数量,其间以 1 个空格分隔,行首尾不得有多余空格。 若出队操作被调用时队列是空的,则在对应行中输出 ERROR

样例

10
I 20
I 32
O
I 11
O
O
O
I 100
I 66
O
20 5
32 1
11 3
ERROR
100 5

限制

对于所有的测试用例,限制为400ms, 64MB

PAT2023夏季重现赛

未参加
状态
已结束
规则
IOI
题目
9
开始于
2025-11-23 18:30
结束于
2025-11-23 22:00
持续时间
3.5 小时
主持人
参赛人数
31