結果

問題 No.3094 Stapler
ユーザー sasa8uyauya
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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
0