171252025-05-24 01:48:45ProgiBináris fa magassága (50 pont)python3Accepted 50/50388ms4776 KiB
from sys import stdin

def main():
    N,M = [int(i) for i in stdin.readline().split()]
##    start_time = time.time()
    a = [N]   # alatta levő "mélység"
    k = 1
    for i in range(1,N):
        a = a + [N-i]*k
        k *= 2
    h = [1]*k*2

    for i in range(M):
        cs,x = [int(i) for i in stdin.readline().split()]
        h[cs] = x
        while cs > 1:
            c = cs//2
            c2 = c*2
            if cs < k:
                a[c] = max(h[c2]+a[c2], h[c2+1]+a[c2+1])
            else:
                a[c] = max(h[c2], h[c2+1])
            cs = c
        print(a[1])
##    print(round(time.time() - start_time, 4))

##import time
main()
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/017ms3060 KiB
2Accepted0/0263ms4580 KiB
3Accepted2/217ms3124 KiB
4Accepted2/217ms3136 KiB
5Accepted2/218ms3028 KiB
6Accepted2/219ms3116 KiB
7Accepted3/318ms3156 KiB
8Accepted3/319ms3232 KiB
9Accepted3/319ms3244 KiB
10Accepted3/318ms3468 KiB
11Accepted2/2388ms4588 KiB
12Accepted2/2386ms4776 KiB
13Accepted2/2386ms4672 KiB
14Accepted2/2381ms4776 KiB
15Accepted2/2379ms4668 KiB
16Accepted2/2263ms4648 KiB
17Accepted2/2270ms4692 KiB
18Accepted2/2270ms4776 KiB
19Accepted2/2263ms4776 KiB
20Accepted3/3287ms4520 KiB
21Accepted3/3284ms4520 KiB
22Accepted3/3289ms4588 KiB
23Accepted3/3286ms4712 KiB