結果

問題 No.1675 Strange Minimum Query
ユーザー sasa8uyauyasasa8uyauya
提出日時 2024-08-18 20:41:34
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,750 ms / 2,000 ms
コード長 1,073 bytes
コンパイル時間 542 ms
コンパイル使用メモリ 82,268 KB
実行使用メモリ 115,628 KB
最終ジャッジ日時 2024-08-18 20:42:09
合計ジャッジ時間 32,891 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 34
権限があれば一括ダウンロードができます

ソースコード

diff #

n,q=map(int,input().split())
query=[]
for i in range(q):
  l,r,b=map(int,input().split())
  l-=1
  r-=1
  query+=[(b,l,r)]
query.sort()
B=int(n**0.5)+1
X=10**9
st1=[X]*B*B
st2=[0]*B
for b,l,r in query:
  y=l//B
  if st2[y]!=0:
    for i in range(y*B,y*B+B):
      st1[i]=st2[y]
    st2[y]=0
  y=r//B
  if st2[y]!=0:
    for i in range(y*B,y*B+B):
      st1[i]=st2[y]
    st2[y]=0
  if l//B==r//B:
    for i in range(l,r+1):
      st1[i]=b
  else:
    y=l//B
    for i in range(l,y*B+B):
      st1[i]=b
    y=r//B
    for i in range(y*B,r+1):
      st1[i]=b
    for i in range(l//B+1,r//B):
      st2[i]=b
for y in range(B):
  if st2[y]!=0:
    for i in range(y*B,y*B+B):
      st1[i]=st2[y]
  st2[y]=min(st1[y*B:y*B+B])
f=1
for b,l,r in query:
  m=X
  if l//B==r//B:
    for i in range(l,r+1):
      m=min(m,st1[i])
  else:
    y=l//B
    for i in range(l,y*B+B):
      m=min(m,st1[i])
    y=r//B
    for i in range(y*B,r+1):
      m=min(m,st1[i])
    for i in range(l//B+1,r//B):
      m=min(m,st2[i])
  f&=m==b
if f:
  print(*[st1[i] for i in range(n)])
else:
  print(-1)
0