結果
問題 | No.875 Range Mindex Query |
ユーザー |
![]() |
提出日時 | 2019-09-07 18:52:05 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,332 bytes |
コンパイル時間 | 225 ms |
コンパイル使用メモリ | 81,972 KB |
実行使用メモリ | 153,552 KB |
最終ジャッジ日時 | 2024-06-27 01:01:45 |
合計ジャッジ時間 | 9,917 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | WA * 18 |
ソースコード
inf = float('inf')class SegmentTree:def __init__(self, N):self.N = 2**(N-1).bit_length()self.data = [[inf, -1]] * (2*self.N)def update(self, k, x):self.data[k+N-1] = [x, k]k += self.N-1while k >= 0:k = (k - 1) // 2if self.data[2*k+1][0] < self.data[2*k+2][0]:self.data[k] = self.data[2*k+1][:]else:self.data[k] = self.data[2*k+2][:]def query(self, l, r):L = l + self.NR = r + self.Ns = [inf, -1]while L < R:if R & 1:R -= 1if s[0] > self.data[R-1][0]:s = self.data[R-1][:]if L & 1:if s[0] > self.data[L-1][0]:s = self.data[L-1][:]L += 1L >>= 1; R >>= 1return sN, Q = map(int,input().split())A = list(map(int,input().split()))query = [list(map(int,input().split())) for _ in range(Q)]st = SegmentTree(N)for i, a in enumerate(A):st.update(i, a)for q, l, r in query:l -= 1r -= 1if q == 1:al, li = st.query(l,l+1)ar, ri = st.query(r,r+1)st.update(l, ar)st.update(r, al)elif q == 2:m, i = st.query(l,r+1)print(i+1)