Submission details
Task:Dynamic Range Minimum Queries
Sender:azeaus1
Submission time:2025-09-21 21:35:24 +0300
Language:Python3 (PyPy3)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.56 sdetails

Code

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

min_queries = [0 for _ in range(2*n)]
for i in range(n):
    min_queries[n + i] = values[i]
for i in range(n-1, 0, -1):
    min_queries[i] = min(min_queries[2*i], min_queries[2*i+1])

def update(k, x):
    k += n
    min_queries[k] = x
    k //= 2
    while k >=1:
        min_queries[k] = min(min_queries[2*k], min_queries[2*k+1])
        k //= 2

def compute_minimum(a, b):
    a += n
    b += n
    minimum = float('inf')
    while a <= b:
        if a%2 == 1:
            minimum = min(minimum, min_queries[a])
            a += 1
        if b%2 == 0:
            minimum = min(minimum, min_queries[b])
            b -= 1
        a //= 2
        b //= 2
    
    queries.append(minimum)

for _ in range(q):
    query = [int(x) for x in input().split()]
    a = query[1]-1
    if query[0] == 1:
        update(a, query[2])
    else:
        b = query[2]-1
        compute_minimum(a, b)

for i in range(len(queries)):
    print(queries[i])

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