結果
問題 | No.3094 Stapler |
ユーザー |
![]() |
提出日時 | 2025-04-12 15:21:46 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,648 bytes |
コンパイル時間 | 456 ms |
コンパイル使用メモリ | 82,336 KB |
実行使用メモリ | 100,212 KB |
最終ジャッジ日時 | 2025-04-12 15:24:03 |
合計ジャッジ時間 | 129,202 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 41 TLE * 30 |
ソースコード
n=int(input()) Q=int(input()) que=[] for _ in range(Q): que+=[list(map(int,input().split()+["0","0"]))[:3]] def op(x,y): if x[0]<y[0]: return x if y[0]<x[0]: return y return (x[0],x[1]+y[1]) B=1000 st1=[0]*B*B st2=[B]*B lt=[0]*B X=10**10 for t,p1,p2 in que: l,r=0,n-2 if t==1: l,r=p1-1,p2-1 if l==r: continue r-=1 v=1 if t==2: _,p3,p4=que[p1-1] l,r=p3-1,p4-1 if l==r: continue r-=1 v=-1 yl=l//B yr=r//B for y in [yl,yr]: for i in range(y*B,y*B+B): st1[i]+=lt[y] lt[y]=0 if t==3: a=(X,0) if yl==yr: for i in range(l,r+1): a=op(a,(st1[i],1)) else: for i in range(l,yl*B+B): a=op(a,(st1[i],1)) for i in range(yl+1,yr): a=op(a,(st2[i]//(B+1),st2[i]%(B+1))) for i in range(yr*B,r+1): a=op(a,(st1[i],1)) print(a[1]+1 if a[0]==0 else 0) continue if yl==yr: y=yl for i in range(l,r+1): if st2[y]//(B+1)==st1[i]: st2[y]-=1 st1[i]+=v if st2[y]//(B+1)==st1[i]: st2[y]+=1 if st2[y]//(B+1)>st1[i]: st2[y]=st1[i]*(B+1)+1 else: for i in range(l,yl*B+B): y=i//B if st2[y]//(B+1)==st1[i]: st2[y]-=1 st1[i]+=v if st2[y]//(B+1)==st1[i]: st2[y]+=1 if st2[y]//(B+1)>st1[i]: st2[y]=st1[i]*(B+1)+1 for i in range(yl+1,yr): st2[i]+=v*(B+1) lt[i]+=v for i in range(yr*B,r+1): y=i//B if st2[y]//(B+1)==st1[i]: st2[y]-=1 st1[i]+=v if st2[y]//(B+1)==st1[i]: st2[y]+=1 if st2[y]//(B+1)>st1[i]: st2[y]=st1[i]*(B+1)+1