ログインしてください。
提出 #76691343
ソースコード 拡げる
from atcoder.segtree import SegTree
import math
import heapq
def solve(n:int,m:int,lrs:list[tuple[int,int]]):
rls=[(r-1,l-1) for l,r in lrs]
rls.sort()
ls=[rls[i][1] for i in range(m)]
def op(a,b):
return min(a,b)
st=SegTree(min,math.inf,ls)
def nibtan(x:int):#位置x以上のrのもので最小のl
ok=m
ng=-1
mid=0
while abs(ok-ng)>1:
mid=(ok+ng)//2
if rls[mid][0]>=x:
ok=mid
else:
ng=mid
if ok==m:
return n+10
return st.prod(ok,m)
mex=[i+1 for i in range(n+1)]
heapq.heapify(mex)
kul=0
sakuzyo=set()
ans=[]
inai=set()
def tuika(x:int):#区間にxを追加する#ただしxは区間に含まれない数のはず
sakuzyo.add(x)
while mex[0] in sakuzyo:
kesu=heapq.heappop(mex)
inai.add(kesu)
sakuzyo.discard(kesu)
return
def lup(kul):
if ans[kul] in sakuzyo:
sakuzyo.discard(ans[kul])
else:
if ans[kul] not in inai:
return
heapq.heappush(mex,ans[kul])
inai.discard(ans[kul])
def reset(inai,sakuzyo):
for item in inai:
heapq.heappush(mex,item)
return
for i in range(n):
minl=nibtan(i)
if minl>i:
ans.append(1)
kul=i+1
reset(inai,sakuzyo)
inai=set()
sakuzyo=set()
else:
while minl>kul:
lup(kul)
kul+=1
atai=mex[0]
ans.append(atai)
tuika(atai)
return tuple(ans)
if __name__=="__main__":
for _ in range(int(input())):
n,m=map(int,input().split())
lrs=[tuple(map(int,input().split())) for i in range(m)]
print(*solve(n,m,lrs))
提出情報
| 提出日時 | |
|---|---|
| 問題 | A - Colorful Intervals |
| ユーザ | st0123 |
| 言語 | Python (PyPy 3.11-v7.3.20) |
| 得点 | 300 |
| コード長 | 2072 Byte |
| 結果 | AC |
| 実行時間 | 889 ms |
| メモリ | 187400 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 300 / 300 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 01_sample_01.txt |
| All | 01_sample_01.txt, 02_small_01.txt, 02_small_02.txt, 03_rand_1_01.txt, 03_rand_1_02.txt, 03_rand_1_03.txt, 03_rand_1_04.txt, 03_rand_1_05.txt, 04_rand_2_01.txt, 04_rand_2_02.txt, 04_rand_2_03.txt, 04_rand_2_04.txt, 04_rand_2_05.txt, 05_rand_3_01.txt, 05_rand_3_02.txt, 05_rand_3_03.txt, 05_rand_3_04.txt, 05_rand_3_05.txt, 05_rand_3_06.txt, 05_rand_3_07.txt, 05_rand_3_08.txt, 05_rand_3_09.txt, 05_rand_3_10.txt, 06_other_01.txt, 06_other_02.txt, 06_other_03.txt, 06_other_04.txt, 06_other_05.txt, 06_other_06.txt, 06_other_07.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 01_sample_01.txt | AC | 132 ms | 111464 KiB |
| 02_small_01.txt | AC | 752 ms | 116924 KiB |
| 02_small_02.txt | AC | 785 ms | 117060 KiB |
| 03_rand_1_01.txt | AC | 847 ms | 117504 KiB |
| 03_rand_1_02.txt | AC | 834 ms | 116408 KiB |
| 03_rand_1_03.txt | AC | 830 ms | 117216 KiB |
| 03_rand_1_04.txt | AC | 825 ms | 116728 KiB |
| 03_rand_1_05.txt | AC | 840 ms | 117940 KiB |
| 04_rand_2_01.txt | AC | 831 ms | 138872 KiB |
| 04_rand_2_02.txt | AC | 844 ms | 140792 KiB |
| 04_rand_2_03.txt | AC | 866 ms | 141564 KiB |
| 04_rand_2_04.txt | AC | 809 ms | 134376 KiB |
| 04_rand_2_05.txt | AC | 803 ms | 137832 KiB |
| 05_rand_3_01.txt | AC | 478 ms | 163312 KiB |
| 05_rand_3_02.txt | AC | 617 ms | 150620 KiB |
| 05_rand_3_03.txt | AC | 824 ms | 187088 KiB |
| 05_rand_3_04.txt | AC | 644 ms | 156424 KiB |
| 05_rand_3_05.txt | AC | 639 ms | 176396 KiB |
| 05_rand_3_06.txt | AC | 783 ms | 158936 KiB |
| 05_rand_3_07.txt | AC | 582 ms | 145484 KiB |
| 05_rand_3_08.txt | AC | 539 ms | 140768 KiB |
| 05_rand_3_09.txt | AC | 592 ms | 171408 KiB |
| 05_rand_3_10.txt | AC | 652 ms | 178684 KiB |
| 06_other_01.txt | AC | 581 ms | 114704 KiB |
| 06_other_02.txt | AC | 357 ms | 155400 KiB |
| 06_other_03.txt | AC | 889 ms | 187400 KiB |
| 06_other_04.txt | AC | 628 ms | 159940 KiB |
| 06_other_05.txt | AC | 626 ms | 163248 KiB |
| 06_other_06.txt | AC | 479 ms | 154316 KiB |
| 06_other_07.txt | AC | 576 ms | 185200 KiB |