| Task: | Dynamic Range Minimum Queries |
| Sender: | francden |
| Submission time: | 2025-09-21 23:15:08 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.82 s | details |
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 |
