133002025-01-07 12:45:44Leventusz09Bináris fa magassága (50 pont)cpp17Időlimit túllépés 20/50600ms1272 KiB
#include <bits/stdc++.h>

using namespace std;


int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    long long N, M;
    cin >> N >> M;

    long long len = (1 << N);

    long long ps[len/2]; // utak
    long long lv[len]; // egy csúcs utolsó szülő súlya
    for(int i=0; i<len/2; i++) ps[i] = N-1;
    for(int i=0; i<len; i++)   lv[i] = 1;

    long long V, E;



    for(long long _=0; _<M; _++){
        cin >> V;
        cin >> E;

        // hány utat érint?
        //      -> 2 ^ (N - szint)
        // honnan kezdve?
        //      -> csúcs * 2 ^ (N - szin - 1)

        long long l = log2(V) + 1; //szint
        long long c = pow(2, N - l); //hány utat érint
        long long s = V * c; //honnan kezdve

        for(long long i=s; i<s+c; i++){
            ps[i - len/2] += E - lv[V-1];
        }
        lv[V-1] = E;

        long long mx = 0;
        for(long long &i : ps) if(i > mx) mx = i;

        cout << mx << "\n";
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/50
1Elfogadva0/01ms508 KiB
2Időlimit túllépés0/0577ms1076 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms552 KiB
7Elfogadva3/32ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/32ms512 KiB
10Elfogadva3/31ms508 KiB
11Időlimit túllépés0/2600ms1188 KiB
12Időlimit túllépés0/2600ms1184 KiB
13Időlimit túllépés0/2600ms1076 KiB
14Időlimit túllépés0/2583ms1076 KiB
15Időlimit túllépés0/2578ms1248 KiB
16Időlimit túllépés0/2578ms1272 KiB
17Időlimit túllépés0/2579ms1076 KiB
18Időlimit túllépés0/2582ms1076 KiB
19Időlimit túllépés0/2591ms1188 KiB
20Időlimit túllépés0/3591ms1192 KiB
21Időlimit túllépés0/3591ms1076 KiB
22Időlimit túllépés0/3587ms1076 KiB
23Időlimit túllépés0/3584ms1188 KiB