def main() -> None: N, Q = map(int, input().split()) default = (1 << 31) - 1 rmq = SegmentTree(N, min, default) for _ in range(Q): com, x, y = map(int, input().split()) if com == 0: rmq.update(x, y) else: print(rmq.query(x, y + 1))
def main() -> None: _, Q = map(int, input().split()) A = [int(x) for x in input().split()] rmq = SegmentTree.create_from_array(A, min, 10**9) ans = [] for _ in range(Q): l, r = map(int, input().split()) ans.append(rmq.query(l, r)) print(*ans, sep="\n")
def main() -> None: _, Q = map(int, input().split()) A = [int(x) for x in input().split()] rsq = SegmentTree.create_from_array(A, operator.add, 0) ans = [] for _ in range(Q): type_, l, r = map(int, input().split()) if type_ == 0: rsq.update(l, rsq[l] + r) else: ans.append(rsq.query(l, r)) print(*ans, sep="\n")
def main() -> None: N, Q = map(int, input().split()) A = [tuple(map(int, input().split())) for _ in range(N)] mod = 998244353 def merge(l, r, mod=mod): return l[0] * r[0] % mod, (l[1] * r[0] + r[1]) % mod segt = SegmentTree.create_from_array(A, merge, (1, 0)) ans = [] for _ in range(Q): t, a, b, c = map(int, input().split()) if t == 0: segt.update(a, (b, c)) else: a1, a2 = segt.query(a, b) ans.append((a1 * c + a2) % mod) print(*ans, sep="\n")
def main() -> None: N, Q = map(int, input().split()) weights = [int(x) for x in input().split()] graph = Graph(N) for _ in range(N - 1): u, v = map(int, input().split()) graph.add_edge(u, v, 1) graph.add_edge(v, u, 1) hld = HeavyLightDecomposition(graph) new_weights = [0] * N for i in range(N): new_weights[hld.vid[i]] = weights[i] rsq = SegmentTree.create_from_array(new_weights, operator.add, 0) ans = [] for _ in range(Q): t, a, b = map(int, input().split()) if t == 0: rsq[hld.vid[a]] = rsq[hld.vid[a]] + b else: ans.append(hld.query_path(a, b, 0, rsq.query, operator.add)) print(*ans, sep="\n")
def main() -> None: N, Q = map(int, input().split()) weights = [int(x) for x in input().split()] graph = Graph(N) for i, v in enumerate(map(int, input().split())): graph.add_edge(i + 1, v, 1) graph.add_edge(v, i + 1, 1) hld = HeavyLightDecomposition(graph, 0, True) new_weights = [0] * N for i in range(N): new_weights[hld.vid[i]] = weights[i] rsq = SegmentTree.create_from_array(new_weights, operator.add, 0) ans = [] for _ in range(Q): query = [int(x) for x in input().split()] if query[0] == 0: a, b = query[1:] rsq[hld.vid[a]] = rsq[hld.vid[a]] + b else: u = query[1] ans.append(rsq.query(hld.vid[u], hld.tail[u])) print(*ans, sep="\n")