AcWing 3248. 公共钥匙盒-python3-sorted排序
原题链接
简单
Python 代码
import sys
def main():
readline = sys.stdin.readline
n, k = [int(s) for s in readline().strip().split()] # n个房间,k个老师
ops = []
for _ in range(k):
yaoshi, jie, time = [int(s) for s in readline().strip().split()] # 钥匙号,借出时间,使用时长
# 每个操作对应一个动作
ops.append((yaoshi, jie, False)) # 还钥匙是True, 借是False
ops.append((yaoshi, jie + time, True)) # 注意这里 还的时间=借出时间+使用时长
yaoshis = [i for i in range(1, n+1)] # 创建钥匙列表注意从1号开始
ops = sorted(ops, key=lambda x: (x[1], -x[2], x[0])) # *** 把操作按时间排序,同一时间的先还再借,同一时间同一动作编号小的先做
for op in ops:
yaoshi, _, huan = op
if huan: # 还钥匙
for i in range(0, n):
if yaoshis[i] is False: # 位置为空,还进去
yaoshis[i] = yaoshi
break
else: # 借钥匙
idx = yaoshis.index(yaoshi)
yaoshis[idx] = False
print(*yaoshis)
main()