結果

問題 No.3094 Stapler
ユーザー sasa8uyauya
提出日時 2025-04-12 14:39:06
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,299 bytes
コンパイル時間 548 ms
コンパイル使用メモリ 82,796 KB
実行使用メモリ 288,348 KB
最終ジャッジ日時 2025-04-12 14:39:16
合計ジャッジ時間 7,867 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other TLE * 1 -- * 70
権限があれば一括ダウンロードができます

ソースコード

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,1) for i in range(B*B)]
st2=[(0,B) for i in range(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]=(st1[i][0]+lt[y],st1[i][1])
    lt[y]=0
  if t==3:
    a=(X,0)
    if yl==yr:
      for i in range(l,r+1):
        a=op(a,st1[i])
    else:
      for i in range(l,yl*B+B):
        a=op(a,st1[i])
      for i in range(yl+1,yr):
        a=op(a,st2[i])
      for i in range(yr*B,r+1):
        a=op(a,st1[i])
    print(a[1]+1 if a[0]==0 else 0)
    continue
  if yl==yr:
    for i in range(l,r+1):
      st1[i]=(st1[i][0]+v,st1[i][1])
    st2[yl]=(X,0)
    for i in range(yl*B,yl*B+B):
      st2[yl]=op(st2[yl],st1[i])
  else:
    for y in [yl,yr]:
      st2[y]=(X,0)
      for i in range(y*B,y*B+B):
        st1[i]=(st1[i][0]+v,st1[i][1])
        st2[y]=op(st2[y],st1[i])
    for i in range(yl+1,yr):
      st2[i]=(st2[i][0]+v,st2[i][1])
      lt[i]+=v
0