結果

問題 No.2804 Fixer And Ratism
ユーザー D M
提出日時 2025-02-12 15:36:48
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 117 ms / 2,000 ms
コード長 3,348 bytes
コンパイル時間 166 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 76,384 KB
最終ジャッジ日時 2025-02-12 15:37:18
合計ジャッジ時間 4,173 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 31
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import sys
def main():
input = sys.stdin.readline
N, Q = map(int, input().split())
avail = N # 使
# (rating, activated)
current = dict() # key: name, value: [rating, activated]
departures = [] # 退 (time, rating, name)
for time in range(1, Q+1):
query = input().split()
typ = int(query[0])
if typ == 1:
# 1: "1 s r" s ( r)
s = query[1]
r = int(query[2])
# activated=False
current[s] = [r, False]
elif typ == 2:
# 2: "2 x" 使 x
x = int(query[1])
avail -= x
else:
# 3: "3 s x" s x 使
s = query[1]
x = int(query[2])
avail += x
# s activated True
if s in current:
current[s][1] = True
# avail 退
if len(current) > avail:
# activated == True A
groupA = [(name, info[0]) for name, info in current.items() if info[1]]
groupA.sort(key=lambda x: x[1], reverse=True)
# activated == False B
groupB = [(name, info[0]) for name, info in current.items() if not info[1]]
groupB.sort(key=lambda x: x[1], reverse=True)
remain = []
# A avail
takeA = min(len(groupA), avail)
for i in range(takeA):
remain.append(groupA[i][0])
# B
remainingSlots = avail - takeA
for i in range(min(remainingSlots, len(groupB))):
remain.append(groupB[i][0])
# 退
# 退
leave_list = []
for name, info in current.items():
if name not in remain:
leave_list.append( (name, info[0]) )
#
leave_list.sort(key=lambda x: x[1])
for name, rate in leave_list:
departures.append((time, rate, name))
del current[name]
# 退
departures.sort(key=lambda x: (x[0], x[1]))
out_lines = []
for t, rate, name in departures:
out_lines.append(name)
sys.stdout.write("\n".join(out_lines))
if __name__ == '__main__':
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0