結果
問題 | No.875 Range Mindex Query |
ユーザー |
![]() |
提出日時 | 2019-09-07 19:07:22 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,362 bytes |
コンパイル時間 | 182 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 169,912 KB |
最終ジャッジ日時 | 2024-06-27 01:29:37 |
合計ジャッジ時間 | 9,810 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | WA * 18 |
ソースコード
inf = 2**31-1N, Q = map(int,input().split())A = list(map(int,input().split()))queries = [[int(e)-1 for e in input().split()] for _ in range(Q)]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+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 sst = SegmentTree(N)for i, a in enumerate(A):st.update(i, a)def solve(q, l, r):if q == 0:al, li = st.query(l, l+1)ar, ri = st.query(r, r+1)st.update(l, ar)st.update(r, al)elif q == 1:m, i = st.query(l,r+1)print(i+1)for q, l, r in queries:solve(q, l, r)