Submission #25580892


Source Code Expand

L,Q=map(int,input().split())
CX=[list(map(int,input().split())) for i in range(Q)]
class UnionFind:
    def __init__(self,N):
        self.Parent=[-1]*N
        self.Length=[-1]*N
    def unite(self,m,n):
        rm=self.root(m)
        rn=self.root(n)
        if rm==rn:
            return False
        else:
            if self.size(rm)<self.size(rn):
                rm,rn=rn,rm
            self.Parent[rm]+=self.Parent[rn]
            self.Parent[rn]=rm
            self.Length[rm]+=self.Length[rn]
            return True
    def root(self,n):
        if self.Parent[n]<0:
            return n
        else:
            self.Parent[n]=self.root(self.Parent[n])
            return self.Parent[n]
    def size(self,n):
        return -self.Parent[self.root(n)]
    def length(self,n):
        return self.Length[self.root(n)]
    def components(self):
        return sum(e<0 for e in self.Parent)
d=[]
for c,x in CX:
    if c==1:
        d.append(x)
d.sort()
u=UnionFind(len(d)+1)
d=[0]+d+[L]
for i in range(len(d)-1):
    u.Length[i]=d[i+1]-d[i]
from bisect import bisect_left
a=[]
for c,x in reversed(CX):
    b=bisect_left(d,x)
    if c==1:
        u.unite(b-1,b)
    else:
        a.append(u.length(b-1))
print(*reversed(a),sep='\n')

Submission Info

Submission Time
Task D - Cutting Woods
User st2d
Language PyPy3 (7.3.0)
Score 400
Code Size 1288 Byte
Status AC
Exec Time 727 ms
Memory 127616 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 15
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_max_random_00.txt, 01_max_random_01.txt, 01_max_random_02.txt, 01_max_random_03.txt, 01_max_random_04.txt, 02_all_1_00.txt, 03_all_2_00.txt, 04_hack_00.txt, 04_hack_01.txt, 04_hack_02.txt, 04_hack_03.txt, 04_hack_04.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 108 ms 62424 KiB
00_sample_01.txt AC 53 ms 62124 KiB
00_sample_02.txt AC 50 ms 62444 KiB
01_max_random_00.txt AC 648 ms 124940 KiB
01_max_random_01.txt AC 650 ms 126160 KiB
01_max_random_02.txt AC 627 ms 123604 KiB
01_max_random_03.txt AC 658 ms 125780 KiB
01_max_random_04.txt AC 679 ms 124680 KiB
02_all_1_00.txt AC 727 ms 120488 KiB
03_all_2_00.txt AC 399 ms 123092 KiB
04_hack_00.txt AC 415 ms 127616 KiB
04_hack_01.txt AC 414 ms 127616 KiB
04_hack_02.txt AC 617 ms 121708 KiB
04_hack_03.txt AC 652 ms 124680 KiB
04_hack_04.txt AC 629 ms 123812 KiB