Submission details
Task:Dynamic Range Minimum Queries
Sender:badr_masaaf
Submission time:2025-09-23 23:06:59 +0300
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2--details

Code

import sys
input = sys.stdin.readline

def build(node, l, r):
    if l == r:
        seg[node] = arr[l]
    else:
        m = (l + r) // 2
        build(2*node, l, m)
        build(2*node+1, m+1, r)
        seg[node] = min(seg[2*node], seg[2*node+1])

def update(node, l, r, idx, val):
    if l == r:
        seg[node] = val
    else:
        m = (l + r) // 2
        if idx <= m:
            update(2*node, l, m, idx, val)
        else:
            update(2*node+1, m+1, r, idx, val)
        seg[node] = min(seg[2*node], seg[2*node+1])

def query(node, l, r, ql, qr):
    if qr < l or r < ql:
        return 10**18
    if ql <= l and r <= qr:
        return seg[node]
    m = (l + r) // 2
    return min(query(2*node, l, m, ql, qr), query(2*node+1, m+1, r, ql, qr))

n, q = map(int, input().split())
arr = [0] + list(map(int, input().split()))
seg = [0] * (4*n)
build(1, 1, n)

for _ in range(q):
    t, a, b = map(int, input().split())
    if t == 1:
        update(1, 1, n, a, b)
    else:
        print(query(1, 1, n, a, b))

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

Test 2

Verdict:

input
200000 200000
398739055 65343131 699208332 3...

correct output
28609
129890
20378
20378
311522
...

user output
(empty)