84182024-01-15 18:30:47kukkermanBináris fa magassága (50 pont)cpp17Accepted 50/5039ms5592 KiB
#include <iostream>
#include <vector>

using Muveletek = std::vector<std::pair<int, int>>;

void beolvas(std::istream &be, int &n, Muveletek &muveletek) {
    int m;
    be >> n >> m;

    muveletek.resize(m);
    for (auto &[cs, h] : muveletek) {
        be >> cs >> h;
    }
}

void feldolgoz(int n, const Muveletek &muveletek) {
    // reszfa magassaga, szulo el hossza
    std::vector<std::pair<int, int>> fa((1ULL << n) - 1, { 0, 1 });

    for (int akt = static_cast<int>(fa.size() - 1) / 2 - 1; akt >= 0; akt--) {
        const int b = akt * 2 + 1;
        const int j = b + 1;

        fa[akt].first = fa[b].first + fa[b].second;
    }

    for (auto [cs, uj_hossz] : muveletek) {
        int akt = cs - 1;
        fa[akt].second = uj_hossz;
        while (akt > 0) {
            const auto szulo = (akt - 1) / 2;
            const auto testver = (akt & 1) > 0 ? akt + 1 : akt - 1;
            const int uj_szulo_mag = std::max(fa[akt].first + fa[akt].second,
                                              fa[testver].first + fa[testver].second);
            if (fa[szulo].first != uj_szulo_mag) {
                fa[szulo].first = uj_szulo_mag;
                akt = szulo;
            } else {
                break;
            }
        }

        std::cout << fa[0].first << '\n';
    }
}

int main() {
    int n;
    Muveletek muveletek;
    beolvas(std::cin, n, muveletek);

    feldolgoz(n, muveletek);

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1808 KiB
2Accepted0/035ms3812 KiB
3Accepted2/23ms2236 KiB
4Accepted2/23ms2436 KiB
5Accepted2/23ms2516 KiB
6Accepted2/23ms2756 KiB
7Accepted3/33ms3000 KiB
8Accepted3/33ms2968 KiB
9Accepted3/33ms3052 KiB
10Accepted3/33ms3072 KiB
11Accepted2/239ms5020 KiB
12Accepted2/239ms5108 KiB
13Accepted2/239ms5192 KiB
14Accepted2/239ms5196 KiB
15Accepted2/239ms5104 KiB
16Accepted2/234ms5108 KiB
17Accepted2/235ms5104 KiB
18Accepted2/235ms5108 KiB
19Accepted2/235ms5236 KiB
20Accepted3/335ms5320 KiB
21Accepted3/335ms5412 KiB
22Accepted3/335ms5320 KiB
23Accepted3/335ms5592 KiB