214902026-01-13 10:37:24vyrallBináris fa magassága (50 pont)pypy3Accepted 50/50172ms27472 KiB
n, m = map(int, input().split())
tree = (2**n) * [0]
vals = (2**n) * [1]
out = []

for i in range(2**(n-1) - 1, 0, -1):
    tree[i] = max(tree[2*i], tree[2*i+1]) + vals[i]

def update(idx, new_val):
    vals[idx] = new_val
    j = idx
    while j > 0:
        if j <= 2**(n-1) - 1:
            tree[j] = max(tree[2 * j] + vals[2 * j], tree[2 * j + 1] + vals[2*j + 1])
        else:
            tree[j] = 0
        j = j // 2
    out.append(tree[1])

for _ in range(m):
    index, val = map(int, input().split())
    update(index, val)

for i in out:
    print(i)

SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/039ms19628 KiB
2Accepted0/0172ms26788 KiB
3Accepted2/286ms21588 KiB
4Accepted2/282ms22180 KiB
5Accepted2/275ms21992 KiB
6Accepted2/286ms21988 KiB
7Accepted3/375ms22188 KiB
8Accepted3/375ms21992 KiB
9Accepted3/383ms22248 KiB
10Accepted3/375ms22108 KiB
11Accepted2/2163ms27088 KiB
12Accepted2/2152ms27112 KiB
13Accepted2/2168ms27368 KiB
14Accepted2/2152ms27100 KiB
15Accepted2/2165ms26392 KiB
16Accepted2/2165ms27368 KiB
17Accepted2/2152ms27460 KiB
18Accepted2/2156ms27392 KiB
19Accepted2/2165ms27368 KiB
20Accepted3/3170ms27432 KiB
21Accepted3/3168ms27368 KiB
22Accepted3/3150ms27472 KiB
23Accepted3/3158ms27368 KiB