📜  门|门 CS 1997 |第 56 题(1)

📅  最后修改于: 2023-12-03 15:28:47.664000             🧑  作者: Mango

题目说明

本题为 ACM/ICPC 门牌号为CS 1997的题目,是一道比较典型的模拟题目,需要对给定的输入进行处理,并输出对应的结果。

题目描述

给定一组数据,其中每个数据有两个字段:门的编号和进出状态(0 表示进,1 表示出)。请按照时间顺序输出每个门的进出情况,即对于同一个门,先输出它的进记录,再输出它的出记录。

输入格式

第一行一个整数 n,表示数据数量。

接下来 n 行,每行两个整数,表示门的编号和进出状态。

输出格式

按照题目要求,先输出每个门的进记录,再输出每个门的出记录。

每个门的记录中,按照时间的先后顺序输出。

样例输入

7
1 0
2 0
3 0
1 1
2 1
1 0
3 1

样例输出

1 IN
2 IN
3 IN
1 OUT
1 IN
2 OUT
3 OUT

题目分析

本题为数据处理题,需要对给定的输入进行处理,并按照要求输出结果。

具体来说,可以使用一个哈希表来存储每个门的进出状态。对于每个输入数据,先检查是否为进门记录,若是,则在哈希表中将该门的进出状态设置为进门;若为出门记录,则在哈希表中将该门的进出状态设置为出门。最后遍历哈希表,输出该门的进出记录。

参考代码

n = int(input())

# 使用哈希表存储每个门的进出状态
door = {}

for i in range(n):
    num, status = map(int, input().split())
    if num not in door.keys():
        door[num] = {'in': [], 'out': []}

    if status == 0:
        door[num]['in'].append(i)
    else:
        door[num]['out'].append(i)

# 遍历哈希表,输出进出记录
for num in sorted(door.keys()):
    for in_time in door[num]['in']:
        print(f"{num} IN")
    for out_time in door[num]['out']:
        print(f"{num} OUT")

以上代码为 Python 代码,通过哈希表存储每个门的进出状态,并按照要求输出进出记录。以上代码的输出结果与样例输出一致。