結果

問題 No.2220 Range Insert & Point Mex
ユーザー lam6er
提出日時 2025-03-20 21:20:26
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 2,182 bytes
コンパイル時間 354 ms
コンパイル使用メモリ 82,228 KB
実行使用メモリ 155,136 KB
最終ジャッジ日時 2025-03-20 21:21:37
合計ジャッジ時間 11,359 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20 TLE * 1 -- * 15
権限があれば一括ダウンロードができます

ソースコード

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

import bisect
import sys
def main():
input = sys.stdin.read().split()
ptr = 0
N = int(input[ptr])
ptr += 1
from collections import defaultdict
a_dict = defaultdict(list)
for _ in range(N):
l = int(input[ptr])
r = int(input[ptr+1])
a = int(input[ptr+2])
ptr +=3
a_dict[a].append((l, r))
# Merge intervals for each a
merged = {}
for a in a_dict:
intervals = a_dict[a]
intervals.sort()
merged_list = []
for start, end in intervals:
if not merged_list:
merged_list.append([start, end])
else:
last = merged_list[-1]
if start <= last[1] + 1:
# Merge
new_start = min(last[0], start)
new_end = max(last[1], end)
merged_list[-1] = [new_start, new_end]
else:
merged_list.append([start, end])
merged[a] = merged_list
sorted_a = sorted(merged.keys())
Q = int(input[ptr])
ptr +=1
x_list = list(map(int, input[ptr:ptr+Q]))
ptr +=Q
for x in x_list:
m = 0
while True:
# Check if m is present in merged
pos = bisect.bisect_left(sorted_a, m)
if pos < len(sorted_a) and sorted_a[pos] == m:
# Check if x is covered by merged intervals of a=m
intervals = merged[m]
# Binary search in intervals for x
L = 0
R = len(intervals) -1
found = False
while L <= R:
mid = (L + R)//2
s, e = intervals[mid]
if s <=x <=e:
found = True
break
elif x < s:
R = mid -1
else:
L = mid +1
if not found:
print(m)
break
else:
m +=1
else:
print(m)
break
if __name__ == "__main__":
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0