結果

問題 No.2804 Fixer And Ratism
コンテスト
ユーザー LyricalMaestro
提出日時 2026-02-05 01:51:03
言語 PyPy3
(7.3.17)
結果
WA  
実行時間 -
コード長 2,125 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,482 ms
コンパイル使用メモリ 82,628 KB
実行使用メモリ 86,396 KB
最終ジャッジ日時 2026-02-05 01:51:17
合計ジャッジ時間 7,078 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 1 WA * 2 TLE * 1 -- * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

## https://yukicoder.me/problems/no/2804

import heapq

def main():
    N, Q = map(int, input().split())
    queries = []
    for _ in range(Q):
        values = input().split()
        queries.append(values)

    member_map = {}
    for values in queries:
        if values[0] == "1":
            _, s, r = values
            member_map[s] = int(r)
    member_list= list(member_map.keys())
    member_index_map = {}
    for i, m in enumerate(member_list):
        member_index_map[m] = i

    fixed_members = []
    non_fixed_menbers = []
    fixed_members_set = [False] * len(member_list)
    member_num = 0

    go_homed = []
    for i, values in enumerate(queries):
        if values[0] == "1":
            _, s, r = values
            r = int(r)
            s_index = member_index_map[s]
            heapq.heappush(non_fixed_menbers, (r, s_index))
            member_num += 1
            while member_num > N and len(non_fixed_menbers) > 0:
                r, s_index = heapq.heappop(non_fixed_menbers)
                if not fixed_members_set[s_index]:
                    go_homed.append((i, r, s_index))
                    member_num -= 1
        elif values[0] == "2":
            _, x = values
            N -= int(x)
            while member_num > N and len(non_fixed_menbers) > 0:
                r, s_index = heapq.heappop(non_fixed_menbers)
                if not fixed_members_set[s_index]:
                    go_homed.append((i, r, s_index))
                    member_num -= 1

            while member_num > N:
                r, s_index = heapq.heappop(fixed_members)
                go_homed.append((i, r, s_index))
                member_num -= 1
        elif values[0] == "3":
            _, s, x = values
            s_index = member_index_map[s]
            r = member_map[s]
            x = int(x)
            N += x
            if s not in fixed_members:
                fixed_members_set[s_index] = True
                heapq.heappush(fixed_members, (r, s_index))
    
    go_homed.sort()

    for _, _, s in go_homed:
        print(member_list[s])










if __name__ == "__main__":
    main()
0