xs = [2, 1, 5, 3, 4]
op = lambda x, y: x + y
tree = {}
def build(node, L, R):
if L == R:
tree[node] = xs[L]
else:
mid = (L + R) // 2
build(2 * node, L, mid)
build(2 * node + 1, mid + 1, R)
tree[node] = op(tree[2 * node], tree[2 * node + 1])
build(1, 0, len(xs) - 1
)
print(tree)
def query(node, L, R, qL, qR):
print(L, R)
if qL > qR:
return 0
if qL == L and qR == R:
return tree[node]
mid = (L + R) // 2
left = query(2 * node, L, mid, qL, min(qR, mid))
right = query(2 * node + 1, mid + 1, R, max(qL, mid + 1), qR)
print("left :", left)
print("right :", right)
return op(left, right)
l, r = 0, 4
f = lambda x: x
print(type(f))
ans = query(1, 0, 4, l, r)
print(ans)
To embed this program on your website, copy the following code and paste it into your website's HTML: