214982026-01-13 10:45:53szabel26Bináris fa magassága (50 pont)cpp17Futási hiba 0/503ms2072 KiB
#include <iostream>
#include <cmath>
#include <vector>
#define ll long long
using namespace std;

struct adat
{
    ll el_hossz;
    ll tav;
};

ll n, m, a, b, bal_range, jobb_range, i, j;
vector<adat> bal, jobb;
vector<ll>maxi;

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

    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 (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 (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 (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 (j = a * 2; j <= bal_range; j = j * 2)
            {
                bal[j].tav = bal[j / 2].tav + bal[j].el_hossz;
            }
        }
        else
        {
            jobb[a].el_hossz = b;
            jobb[a].tav = jobb[a / 2].tav + jobb[a].el_hossz;
            for (int j = a * 2; j <= jobb_range; j = j * 2)
            {
                jobb[j].tav = jobb[j / 2].tav + jobb[j].el_hossz;
            }
        }

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

    for(auto&e:maxi)
    {
        cout<<e<<endl;
    }

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