Submission details
Task:Dynamic Range Minimum Queries
Sender:francden
Submission time:2025-09-21 23:15:08 +0300
Language:Python3 (PyPy3)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.82 sdetails

Code

n,q = [int(x) for x in input().split()]
L = [int(x) for x in input().split()]

tree = [0 for i in range(n)]
tree+=L
for i in range (n-1,0,-1):
    tree[i]= min(tree[2*i],tree[2*i+1])


def mini(a,b):
    a+=n
    b+=n
    curr_min = tree[a]
    while (a<=b):
        if a%2 == 1:
            curr_min = min(curr_min,tree[a])
            a+=1
        if b%2 == 0:
            curr_min = min(curr_min,tree[b])
            b-=1
        a//=2
        b//=2
    return curr_min

def update(k,v):
    k = n + k
    tree[k] = v
    k//=2
    while(k>=1):
        prev = tree[k]
        tree[k] = min(tree[2*k],tree[2*k+1])
        if tree[k]== prev:
            break
        k//=2

for i in range (q):
    a,b,c = [int(x) for x in input().split()]
    if a == 1:
        update(b-1,c)
    else :
        print(mini(b-1,c-1))

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: ACCEPTED

input
200000 200000
398739055 65343131 699208332 3...

correct output
28609
129890
20378
20378
311522
...

user output
28609
129890
20378
20378
311522
...
Truncated