83482024-01-14 21:53:18rennBináris fa magassága (50 pont)cpp17Accepted 50/5020ms5176 KiB
#include <bits/stdc++.h>

using namespace std;

int sumlevelek[16] = {1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535};
int levelek_n[16] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768};
int a, b, n, k;

int main() {

    cin.tie(0);
    ios::sync_with_stdio(0);

    cin >> n >> k;

    vector<int> hossz(sumlevelek[n-1], 1);
    vector<int> sumhossz(sumlevelek[n-1], n-1);
    for(int i = 1; i < n; i++)
    {
        for(int j = sumlevelek[i-1]; j < sumlevelek[i]; j++)
        {
            sumhossz[j] = n-i-1;
        }
    }
    
    while(k--)
    {
        cin >> a >> b;
        
        hossz[a-1] = b;
        while(a/2 > 0)
        {
            sumhossz[(a/2)-1] = max(sumhossz[a-1]+hossz[a-1], sumhossz[(a^1)-1]+hossz[(a^1)-1]);
            a/=2;
        }
        sumhossz[0] = max(sumhossz[1]+hossz[1], sumhossz[2]+hossz[2]);
        cout << sumhossz[0] << "\n";
    }

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1828 KiB
2Accepted0/018ms3060 KiB
3Accepted2/23ms2200 KiB
4Accepted2/23ms2416 KiB
5Accepted2/23ms2636 KiB
6Accepted2/23ms2840 KiB
7Accepted3/33ms3056 KiB
8Accepted3/33ms3140 KiB
9Accepted3/33ms3140 KiB
10Accepted3/33ms3360 KiB
11Accepted2/219ms4416 KiB
12Accepted2/219ms4436 KiB
13Accepted2/220ms4508 KiB
14Accepted2/220ms4712 KiB
15Accepted2/220ms4744 KiB
16Accepted2/218ms4640 KiB
17Accepted2/218ms4708 KiB
18Accepted2/218ms4636 KiB
19Accepted2/218ms4840 KiB
20Accepted3/319ms4984 KiB
21Accepted3/319ms5060 KiB
22Accepted3/318ms5028 KiB
23Accepted3/319ms5176 KiB