結果
問題 |
No.2220 Range Insert & Point Mex
|
ユーザー |
![]() |
提出日時 | 2025-04-15 23:01:30 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,384 bytes |
コンパイル時間 | 417 ms |
コンパイル使用メモリ | 82,480 KB |
実行使用メモリ | 152,772 KB |
最終ジャッジ日時 | 2025-04-15 23:02:57 |
合計ジャッジ時間 | 18,848 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 TLE * 1 |
ソースコード
import sys def main(): input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 events = [] for _ in range(N): l = int(input[ptr]) r = int(input[ptr+1]) a = int(input[ptr+2]) ptr += 3 events.append((l, 'add', a)) events.append((r + 1, 'remove', a)) # Sort events by x, 'add' comes before 'remove' if x is the same events.sort(key=lambda x: (x[0], 0 if x[1] == 'add' else 1)) Q = int(input[ptr]) ptr += 1 x_list = list(map(int, input[ptr:ptr+Q])) ptr += Q event_ptr = 0 count = {} mex = 0 answers = [] for x in x_list: while event_ptr < len(events) and events[event_ptr][0] <= x: x_event, type_event, a = events[event_ptr] if type_event == 'add': if a in count: count[a] += 1 else: count[a] = 1 if a == mex: while mex in count: mex += 1 else: if count[a] == 1: del count[a] if a < mex: mex = min(mex, a) else: count[a] -= 1 event_ptr += 1 answers.append(mex) print('\n'.join(map(str, answers))) if __name__ == '__main__': main()