Submission details
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 results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.40 sdetails

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
...