132552025-01-07 11:04:10Leventusz09Bináris fa magassága (50 pont)cpp17Időlimit túllépés 20/50589ms744 KiB
#include <iostream>
#include <map>

using namespace std;

bool hw[65536];
map<int, int> etp; // élsúly a szülõ és a csúcs közt
//vector<int> etp;
int ls = 1;  // ettõl az indextõl számoljuk a leveleket
int N, M;

int height(int vertex){
    int s;
    if(hw[vertex]) s = etp.at(vertex);
    else s = 1;
    if(vertex == 1) s = 0;
    if(vertex >= ls) return s;

    int e1 = height(vertex*2);
    int e2 = height(vertex*2+1);

    return s + max(e1, e2);
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> N >> M;

    for(int i=1; i<N; i++) ls*= 2;

    int V, E;
    for(int _=0; _<M; _++){
        cin >> V >> E;
        hw[V] = true;
        etp[V] = E;
        //if(etp.count(V) && E == 1) etp.erase(V);
        cout << height(1) << "\n";
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/50
1Elfogadva0/01ms500 KiB
2Időlimit túllépés0/0577ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva3/32ms424 KiB
8Elfogadva3/33ms316 KiB
9Elfogadva3/34ms316 KiB
10Elfogadva3/34ms436 KiB
11Időlimit túllépés0/2583ms464 KiB
12Időlimit túllépés0/2584ms556 KiB
13Időlimit túllépés0/2584ms464 KiB
14Időlimit túllépés0/2587ms460 KiB
15Időlimit túllépés0/2574ms512 KiB
16Időlimit túllépés0/2560ms460 KiB
17Időlimit túllépés0/2560ms312 KiB
18Időlimit túllépés0/2587ms316 KiB
19Időlimit túllépés0/2575ms316 KiB
20Időlimit túllépés0/3575ms744 KiB
21Időlimit túllépés0/3575ms564 KiB
22Időlimit túllépés0/3589ms564 KiB
23Időlimit túllépés0/3583ms560 KiB