結果

問題 No.3094 Stapler
ユーザー sasa8uyauya
提出日時 2025-04-12 15:18:37
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,616 bytes
コンパイル時間 335 ms
コンパイル使用メモリ 81,916 KB
実行使用メモリ 100,236 KB
最終ジャッジ日時 2025-04-12 15:20:53
合計ジャッジ時間 124,066 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 39 TLE * 28 -- * 4
権限があれば一括ダウンロードができます

ソースコード

diff #

n=int(input())
Q=int(input())
que=[]
for _ in range(Q):
  que+=[list(map(int,input().split()+["0","0"]))[:3]]
op=lambda x,y:(min(x[0],y[0]),x[1]*(x[0]<=y[0])+y[1]*(y[0]<=x[0]))
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