83492024-01-14 21:57:04rennBináris fa magassága (50 pont)cpp17Accepted 50/5020ms4928 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);
    cout.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/018ms2976 KiB
3Accepted2/23ms2228 KiB
4Accepted2/23ms2452 KiB
5Accepted2/23ms2664 KiB
6Accepted2/23ms2872 KiB
7Accepted3/33ms2976 KiB
8Accepted3/33ms3184 KiB
9Accepted3/33ms3268 KiB
10Accepted3/33ms3400 KiB
11Accepted2/219ms4356 KiB
12Accepted2/219ms4552 KiB
13Accepted2/220ms4528 KiB
14Accepted2/219ms4752 KiB
15Accepted2/219ms4764 KiB
16Accepted2/218ms4740 KiB
17Accepted2/218ms4640 KiB
18Accepted2/218ms4780 KiB
19Accepted2/218ms4780 KiB
20Accepted3/318ms4928 KiB
21Accepted3/318ms4892 KiB
22Accepted3/319ms4860 KiB
23Accepted3/318ms4876 KiB