Submission details
Task:Dynamic Range Minimum Queries
Sender:aalto26dh_036
Submission time:2026-09-18 16:36:18 +0300
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2--details

Code

import sys 

input = sys.stdin.read().split()
data = list(map(int,input))
n = data[0]
q = data[1]
array = data[2:n+2]
querries = []
i = n+2
for _ in range(q) :
    querries.append(data[i:i+3])
    i = i +3


class SegmentTree : 
    def __init__(self, arr):
        self.arr = arr 
        self.tree = [None] *(4*len(arr))
        self.build(0,0,len(arr)-1)

    def build(self,node,start,end):
        if end == start : 
            self.tree[node] = self.arr[start]
        else : 
            mid = (start+end)//2
            self.build(2*node +1, start, mid)
            self.build(2*node +2, mid+1, end)
            self.tree[node] = min(self.tree[2*node +1], self.tree[2*node +2])

    def query (self, node, start, end, left, rigth) : 
        if rigth < start or left > end : 
            return float('inf')
        if left <= start and rigth >= end : 
            return self.tree[node]
        mid = (start+end)//2
        return min(self.query(2*node +1,start, mid, left, rigth), self.query(2*node +2, mid +1, end, left, rigth))

tree = SegmentTree(array)
for querry in querries : 
    if querry[0] == 1 :
        array[querry[1]-1] = querry[2]
        tree = SegmentTree(array)
    else : 
        print(tree.query(0,0,n-1,querry[1]-1,querry[2]-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
...

Test 2

Verdict:

input
200000 200000
398739055 65343131 699208332 3...

correct output
28609
129890
20378
20378
311522
...

user output
(empty)