83492024-01-14 21:57:04rennBináris fa magassága (50 pont)cpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1828 KiB
2Elfogadva0/018ms2976 KiB
3Elfogadva2/23ms2228 KiB
4Elfogadva2/23ms2452 KiB
5Elfogadva2/23ms2664 KiB
6Elfogadva2/23ms2872 KiB
7Elfogadva3/33ms2976 KiB
8Elfogadva3/33ms3184 KiB
9Elfogadva3/33ms3268 KiB
10Elfogadva3/33ms3400 KiB
11Elfogadva2/219ms4356 KiB
12Elfogadva2/219ms4552 KiB
13Elfogadva2/220ms4528 KiB
14Elfogadva2/219ms4752 KiB
15Elfogadva2/219ms4764 KiB
16Elfogadva2/218ms4740 KiB
17Elfogadva2/218ms4640 KiB
18Elfogadva2/218ms4780 KiB
19Elfogadva2/218ms4780 KiB
20Elfogadva3/318ms4928 KiB
21Elfogadva3/318ms4892 KiB
22Elfogadva3/319ms4860 KiB
23Elfogadva3/318ms4876 KiB