📜  门|门 IT 2008 |第 42 题(1)

📅  最后修改于: 2023-12-03 14:58:36.422000             🧑  作者: Mango

门|门 IT 2008 |第 42 题

欢迎来到门|门 IT 2008 |第 42 题。这道题目将考察你对程序设计的理解和能力。让我们一起来看看这道题目吧!

题目描述

假设有一个仓库,里面有 n 个物品,分别用 1 ~ n 的编号表示。现在依次有 m 条指令,每条指令包括两种操作:

  1. 将编号为 i 的物品放入仓库中。
  2. 从仓库中取出编号最小的物品。

假设刚开始仓库中没有任何物品,每一次操作结束后需要输出当前仓库内物品的编号。如果仓库为空,则输出 -1。

输入格式

第一行一个整数 m,表示指令的数量。

接下来 m 行,每行描述一条指令。如果操作为第一种操作,则该行包含一个整数 i;如果操作为第二种操作,则该行为空。

输出格式

对于每一次操作,输出当前仓库内所有物品的编号,每个编号后跟一个空格。如果仓库为空,则输出 -1。

输入样例
10
1
1
2

2

1
1
1
2
输出样例
1 
1 2 
2 
-1 
1 
1 2 
1 1 2 
2 
代码实现

以下是 Python 语言的代码实现:

n = int(input())
q = []
for i in range(n):
    s = input().split()
    if len(s) == 1:
        q.append(int(s[0]))
        print(' '.join(list(map(str, q))))
    else:
        if len(q) == 0:
            print(-1)
        else:
            q.pop(0)
            print(' '.join(list(map(str, q))) if len(q) > 0 else -1)

以上代码使用了 Python 语言,实现了指令的逐条处理。在处理操作时,我们使用了队列作为存储器,以便支持 FIFO(先进先出)的特性。如果当前操作为入队操作,则将该物品的编号加入队列,并输出当前队列中所有元素;如果当前操作为出队操作,则从队列头部取出一个元素,并输出当前队列中所有元素。在输出当前队列时,我们使用了 Python 语言的列表推导和 map 函数来方便地将所有元素转换成字符串并拼接起来。最后,如果队列为空,则输出 -1。