| Task: | Dynamic Range Minimum Queries |
| Sender: | aalto26dh_038 |
| Submission time: | 2026-09-17 23:49:34 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | WRONG ANSWER | 0.04 s | details |
| #2 | WRONG ANSWER | 0.46 s | details |
Code
import sys
def next_pow2(n):
if n <= 1:
return 1
return 1 << (n - 1).bit_length()
class SegmentTree:
def __init__(self, arr: list[int]) -> None:
biggie = 10**9
while len(arr) < next_pow2(len(arr)):
arr.append(biggie)
self.n = len(arr)
self.tree = [0] * self.n + arr
for k in range(self.n - 1, -1, -1):
self.tree[k] = min(self.tree[2 * k], self.tree[2 * k + 1])
def update(self, k: int, u: int) -> None:
k = self.n + k - 1
self.tree[k] = u
k = k // 2
while k >= 1:
prev = self.tree[k]
self.tree[k] = min(self.tree[2 * k], self.tree[2 * k + 1])
if self.tree[k] == prev:
# print(f"after {self.tree}")
return
k = k // 2
def min(self, a: int, b: int) -> int:
mini = 10**9
l = 1
r = self.n
curr = 1
# print(f"Searching {a},{b}")
while curr < len(self.tree):
# print(f"now searching at {l},{r},{curr}")
if a == l and b >= r:
# print(f"found at {l},{r},{curr}")
mini = min(mini, self.tree[curr])
break
mid = (l + r) // 2
curr *= 2
if a > mid: # go right
curr += 1
l = mid + 1
else: # go left
r = mid
l = 1
r = self.n
curr = 1
while curr < len(self.tree):
# print(f"now searching at {l},{r},{curr}")
if b == r and l <= a:
# print(f"found at {l},{r},{curr}")
mini = min(mini, self.tree[curr])
break
mid = (l + r) // 2
curr *= 2
if b > mid: # go right
curr += 1
l = mid + 1
else: # go left
r = mid
return mini
def main():
data = sys.stdin.buffer.read().split()
it = iter(data)
n = int(next(it))
q = int(next(it))
arr = [int(next(it)) for _ in range(n)]
queries = [(int(next(it)), int(next(it)), int(next(it))) for _ in range(q)]
st = SegmentTree(arr)
for op, x, y in queries:
if op == 1:
st.update(x, y)
else:
print(st.min(x, y))
main()
Test details
Test 1
Verdict: WRONG ANSWER
| 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 6 4 4 ... |
Feedback: Incorrect character on line 3 col 1: expected "4", got "6"
Test 2
Verdict: WRONG ANSWER
| input |
|---|
| 200000 200000 398739055 65343131 699208332 3... |
| correct output |
|---|
| 28609 129890 20378 20378 311522 ... |
| user output |
|---|
| 797930918 49209284 170415730 267609924 112787538 ... |
Feedback: Incorrect character on line 1 col 1: expected "28609", got "797930918"
