結果

問題 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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 34 ms
52,528 KB
testcase_01 AC 36 ms
53,000 KB
testcase_02 AC 34 ms
52,944 KB
testcase_03 AC 1,091 ms
100,856 KB
testcase_04 AC 1,132 ms
97,180 KB
testcase_05 AC 160 ms
79,364 KB
testcase_06 AC 1,246 ms
106,000 KB
testcase_07 AC 1,457 ms
106,612 KB
testcase_08 AC 36 ms
53,792 KB
testcase_09 AC 62 ms
71,708 KB
testcase_10 AC 309 ms
93,240 KB
testcase_11 AC 116 ms
83,064 KB
testcase_12 AC 365 ms
94,988 KB
testcase_13 AC 1,211 ms
108,904 KB
testcase_14 AC 923 ms
115,628 KB
testcase_15 AC 1,068 ms
115,500 KB
testcase_16 AC 33 ms
52,956 KB
testcase_17 AC 238 ms
82,832 KB
testcase_18 AC 335 ms
85,480 KB
testcase_19 AC 395 ms
89,816 KB
testcase_20 AC 1,036 ms
100,124 KB
testcase_21 AC 919 ms
98,292 KB
testcase_22 AC 1,241 ms
105,120 KB
testcase_23 AC 945 ms
98,680 KB
testcase_24 AC 831 ms
97,188 KB
testcase_25 AC 626 ms
90,712 KB
testcase_26 AC 289 ms
84,972 KB
testcase_27 AC 776 ms
96,528 KB
testcase_28 AC 382 ms
87,940 KB
testcase_29 AC 231 ms
86,244 KB
testcase_30 AC 296 ms
85,204 KB
testcase_31 AC 1,286 ms
104,560 KB
testcase_32 AC 1,726 ms
112,964 KB
testcase_33 AC 1,750 ms
113,136 KB
testcase_34 AC 1,750 ms
113,236 KB
testcase_35 AC 1,302 ms
113,440 KB
testcase_36 AC 1,314 ms
113,828 KB
権限があれば一括ダウンロードができます

ソースコード

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