125162024-12-21 11:56:19GundischBalazsBináris fa magassága (50 pont)cpp17Wrong answer 0/50112ms828 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// Függvény a szülő csúcs kiszámításához
int parent(int node) {
    return node / 2;
}

int main() {
    int N, M;
    cin >> N >> M;

    int total_nodes = (1 << N) - 1; // Teljes csúcsszám: 2^N - 1
    vector<int> edge_lengths(total_nodes + 1, 1); // Az Ă©lek hossza, kezdetben 1

    int max_height = N; // Kezdeti magasság (a teljes fa magassága minden él hossza 1-nél)

    while (M--) {
        int node, new_length;
        cin >> node >> new_length;

        int old_length = edge_lengths[node];
        edge_lengths[node] = new_length; // Él hosszának frissítése

        // Frissítsük a magasságot, ha az érintett
        int current_height = 0;
        int current_node = node;

        while (current_node > 1) {
            current_height += edge_lengths[current_node];
            current_node = parent(current_node);
        }

        current_height += edge_lengths[1]; // Gyökér
        max_height = max(max_height, current_height);

        cout << max_height << "\n"; // Eredmény kiírása
    }

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base0/50
1Wrong answer0/01ms508 KiB
2Wrong answer0/0101ms824 KiB
3Wrong answer0/23ms320 KiB
4Wrong answer0/23ms320 KiB
5Wrong answer0/23ms320 KiB
6Wrong answer0/23ms500 KiB
7Wrong answer0/33ms400 KiB
8Wrong answer0/33ms320 KiB
9Wrong answer0/33ms320 KiB
10Wrong answer0/33ms320 KiB
11Wrong answer0/2108ms692 KiB
12Wrong answer0/2112ms756 KiB
13Wrong answer0/2112ms704 KiB
14Wrong answer0/2103ms824 KiB
15Wrong answer0/2112ms824 KiB
16Wrong answer0/2104ms700 KiB
17Wrong answer0/2109ms828 KiB
18Wrong answer0/2100ms696 KiB
19Wrong answer0/2108ms820 KiB
20Wrong answer0/3108ms748 KiB
21Wrong answer0/3104ms696 KiB
22Wrong answer0/3100ms824 KiB
23Wrong answer0/396ms824 KiB