結果
問題 | No.875 Range Mindex Query |
ユーザー |
![]() |
提出日時 | 2019-09-07 19:08:51 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,055 ms / 2,000 ms |
コード長 | 1,345 bytes |
コンパイル時間 | 255 ms |
コンパイル使用メモリ | 82,112 KB |
実行使用メモリ | 164,952 KB |
最終ジャッジ日時 | 2024-06-27 01:31:23 |
合計ジャッジ時間 | 8,689 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 18 |
ソースコード
inf = float('inf')class SegmentTree:def __init__(self, N):self.N = 2**(N-1).bit_length()self.data = [[inf, -1] for _ in range(2*self.N)]def update(self, k, x):self.data[k+self.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)