| Task: | Dynamic Range Minimum Queries |
| Sender: | aalto26dh_016 |
| Submission time: | 2026-09-21 02:39:58 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.40 s | details |
Code
n, q = map(int, input().split())
a = list(map(int, input().split()))
t = [1 << 62] * (2 * n)
for i in range(n):
t[n + i] = a[i]
for i in range(n - 1, 0, -1):
t[i] = min(t[2 * i], t[2 * i + 1])
o = []
for _ in range(q):
c, x, y = map(int, input().split())
if c == 1:
k = x - 1 + n
t[k] = y
k >>= 1
while k:
t[k] = min(t[2 * k], t[2 * k + 1])
k >>= 1
else:
l = x - 1 + n
r = y - 1 + n
m = 1 << 62
while l <= r:
if l & 1:
m = min(m, t[l]); l += 1
if not r & 1:
m = min(m, t[r]); r -= 1
l >>= 1; r >>= 1
o.append(m)
print('\n'.join(map(str, o)))Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 8 80 7 6 4 6 2 9 4 8 2 1 1 2 1 2 2 1 3 ... |
| correct output |
|---|
| 7 6 4 4 2 ... |
| user output |
|---|
| 7 6 4 4 2 ... |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 398739055 65343131 699208332 3... |
| correct output |
|---|
| 28609 129890 20378 20378 311522 ... |
| user output |
|---|
| 28609 129890 20378 20378 311522 ... |
