214942026-01-13 10:40:35szabel26Bináris fa magassága (50 pont)cpp17Futási hiba 0/503ms1268 KiB
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

struct adat
{
    int el_hossz;
    int tav;
};

int n, m, maxi, a, b, bal_range, jobb_range;
vector<adat> bal, jobb;
//vector<int>maxi;

int main()
{
    cin >> n >> m;
    maxi = n - 1;

    bal_range = pow(2, n - 1);
    jobb_range = pow(2, n - 2) * 3;

    bal.resize(bal_range + 1);
    jobb.resize(jobb_range + 1);

    bal[1].el_hossz = 0;
    bal[1].tav = 0;

    jobb[1].el_hossz = 0;
    jobb[1].tav = 0;
    for (int i = 2; i <= bal_range; i = i * 2)
    {
        bal[i].el_hossz = 1;
        bal[i].tav = bal[i - 1].tav + bal[i].el_hossz;
    }
    for (int i = 3; i <= jobb_range; i = i * 2)
    {
        jobb[i].el_hossz = 1;
        jobb[i].tav = jobb[i - 1].tav + jobb[i].el_hossz;
    }

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

        if (a % 2 != 0)
            --a;

        if (a % 3 != 0)
        {
            bal[a].el_hossz = b;
            bal[a].tav = bal[a / 2].tav + bal[a].el_hossz;
            for (int i = a * 2; i <= bal_range; i = i * 2)
            {
                bal[i].tav = bal[i / 2].tav + bal[i].el_hossz;
            }
        }
        else
        {
            jobb[a].el_hossz = b;
            jobb[a].tav = jobb[a / 2].tav + jobb[a].el_hossz;
            for (int i = a * 2; i <= jobb_range; i = i * 2)
            {
                jobb[i].tav = jobb[i / 2].tav + jobb[i].el_hossz;
            }
        }

        if (bal[bal_range].tav > jobb[jobb_range].tav)
        {
            maxi = bal[bal_range].tav;
        }
        else
        {
            maxi = jobb[jobb_range].tav;
        }

        cout << maxi << endl;
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Elfogadva0/01ms500 KiB
2Futási hiba0/02ms1076 KiB
3Hibás válasz0/23ms316 KiB
4Hibás válasz0/23ms316 KiB
5Hibás válasz0/23ms316 KiB
6Hibás válasz0/23ms344 KiB
7Hibás válasz0/33ms316 KiB
8Hibás válasz0/33ms316 KiB
9Hibás válasz0/33ms316 KiB
10Hibás válasz0/33ms316 KiB
11Futási hiba0/22ms896 KiB
12Futási hiba0/22ms1076 KiB
13Futási hiba0/21ms1076 KiB
14Futási hiba0/21ms1268 KiB
15Futási hiba0/22ms1076 KiB
16Futási hiba0/22ms1268 KiB
17Futási hiba0/22ms1076 KiB
18Futási hiba0/22ms1076 KiB
19Futási hiba0/22ms1076 KiB
20Futási hiba0/31ms1076 KiB
21Futási hiba0/32ms1076 KiB
22Futási hiba0/32ms1076 KiB
23Futási hiba0/32ms1076 KiB