| Task: | Dynamic Range Minimum Queries |
| Sender: | luukwin |
| Submission time: | 2025-09-22 15:24:37 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.47 s | details |
Code
n, q = [int(x) for x in input().split()]
N = 1 << (n-1).bit_length()
# print(N)
array = [int(x) for x in input().split()]
minimums = [10**10 for _ in range(2*N)]
for i in range(n):
minimums[N+i] = array[i]
def BuildSparseTree():
for i in range(N-1, 0, -1):
minimums[i] = min(minimums[i*2], minimums[i*2+1])
BuildSparseTree()
output = []
for i in range(q):
action, k, u = [int(x) for x in input().split()]
if action == 1:
pos = N + k - 1
minimums[pos] = u
pos //=2
while pos > 0:
minimums[pos] = min(minimums[pos*2], minimums[pos*2+1])
pos //= 2
else:
l = N + k - 1
r = N + u
s = 10 ** 10
while l < r:
if l & 1:
s = min(s, minimums[l])
l += 1
if r&1:
r -= 1
s = min(s, minimums[r])
l //= 2
r //= 2
output.append(str(s))
print("\n".join(output))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 |
