125552024-12-22 21:21:15BucsMateBináris fa magassága (50 pont)cpp17Elfogadva 50/50114ms1336 KiB
#include <iostream>

using namespace std;

void setupBinTree(int binTree[], int edges[], int level, int N, int node)
{
    if(level >= N){
        return;
    }
    binTree[node] = N - level - 1;
    edges[node] = 1;
    setupBinTree(binTree, edges, level+1, N, 2*node);
    setupBinTree(binTree, edges, level+1, N, 2*node+1);
}

void update(int binTree[], int edges[], int node)
{
    if(node < 1){
        return;
    }
    binTree[node] = max(binTree[2*node] + edges[2*node], binTree[2*node+1] + edges[2*node+1]);
    update(binTree, edges, node/2);
}

int main()
{
    int binTree[100000] = {}, edges[100000] = {};
    int N, M, val, tempNode;
    cin >> N >> M;
    setupBinTree(binTree, edges, 0, N, 1);

    for(int i = 0; i < M; i++){
        cin >> tempNode >> val;
        edges[tempNode] = val;
        if(tempNode%2 == 0){
            update(binTree, edges, tempNode/2);
        }
        else{
            update(binTree, edges, tempNode/2);
        }
        cout << binTree[1] << endl;
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/02ms1268 KiB
2Elfogadva0/0101ms1336 KiB
3Elfogadva2/24ms1080 KiB
4Elfogadva2/23ms1260 KiB
5Elfogadva2/23ms1080 KiB
6Elfogadva2/23ms1080 KiB
7Elfogadva3/33ms1080 KiB
8Elfogadva3/33ms1084 KiB
9Elfogadva3/33ms1080 KiB
10Elfogadva3/33ms1080 KiB
11Elfogadva2/2108ms1320 KiB
12Elfogadva2/2108ms1204 KiB
13Elfogadva2/2108ms1336 KiB
14Elfogadva2/2108ms1336 KiB
15Elfogadva2/2114ms1268 KiB
16Elfogadva2/2103ms1336 KiB
17Elfogadva2/2103ms1224 KiB
18Elfogadva2/2105ms1336 KiB
19Elfogadva2/2103ms1268 KiB
20Elfogadva3/3104ms1200 KiB
21Elfogadva3/3107ms1212 KiB
22Elfogadva3/3101ms1200 KiB
23Elfogadva3/3105ms1204 KiB