219412026-01-14 10:55:37szabel26Bináris fa magassága (50 pont)cpp17Time limit exceeded 20/50600ms1380 KiB
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

struct adat
{
    int tav, el_hossz, apa;
};

int n, m, a, b, i, csp_db, maxi;
vector<adat> x;
vector<int> sol;

void szelessegi(int szint, int kezd, int veg)
{
    for (int j = kezd; j <= veg; ++j)
    {
        x[j].tav = x[x[j].apa].tav + x[j].el_hossz;
        if (x[j].tav > maxi)
            maxi = x[j].tav;
    }
    if (szint < n - 1)
    {
        kezd = veg + 1;
        veg = veg * 2 + 1;
        szelessegi(szint + 1, kezd, veg);
    }
    else
    {
        sol.push_back(maxi);
        return;
    }
}

int main()
{
    cin >> n >> m;

    csp_db = pow(2, n) - 1;
    x.resize(csp_db + 1);

    x[1].tav = 0;
    x[1].el_hossz = 0;
    x[1].apa = 0;

    for (i = 2; i <= csp_db; ++i)
    {
        int szint = log2(i);
        int kezd = pow(2, szint);
        int veg = pow(2, szint + 1) - 1;

        x[i].apa = i / 2;
        x[i].el_hossz = 1;
        x[i].tav = x[x[i].apa].tav + x[i].el_hossz;
    }

    for (i = 1; i <= m; ++i)
    {
        cin >> a >> b;

        x[a].el_hossz = b;
        x[a].tav = x[x[a].apa].tav + x[a].el_hossz;

        maxi = 0;
        if (log2(a) < n - 1)
        {
            int szint = log2(a) + 1;
            int kezd = pow(2, szint);
            int veg = pow(2, szint + 1) - 1;
            szelessegi(szint, kezd, veg);
        }
        else
        {
            int szint = log2(a);
            int kezd = pow(2, szint);
            int veg = pow(2, szint + 1) - 1;
            szelessegi(szint, kezd, veg);
        }
    }

    for (auto &e : sol)
    {
        cout << e << endl;
    }
}
SubtaskSumTestVerdictTimeMemory
base20/50
1Accepted0/01ms316 KiB
2Time limit exceeded0/0577ms1260 KiB
3Accepted2/23ms316 KiB
4Accepted2/23ms316 KiB
5Accepted2/23ms316 KiB
6Accepted2/23ms316 KiB
7Accepted3/33ms316 KiB
8Accepted3/33ms332 KiB
9Accepted3/33ms560 KiB
10Accepted3/33ms316 KiB
11Time limit exceeded0/2600ms1188 KiB
12Time limit exceeded0/2600ms1184 KiB
13Time limit exceeded0/2598ms1188 KiB
14Time limit exceeded0/2575ms1076 KiB
15Time limit exceeded0/2583ms1188 KiB
16Time limit exceeded0/2583ms1380 KiB
17Time limit exceeded0/2583ms1076 KiB
18Time limit exceeded0/2582ms1076 KiB
19Time limit exceeded0/2579ms1184 KiB
20Time limit exceeded0/3580ms1076 KiB
21Time limit exceeded0/3580ms1188 KiB
22Time limit exceeded0/3578ms1076 KiB
23Time limit exceeded0/3584ms1268 KiB