132592025-01-07 11:10:04Leventusz09Bináris fa magassága (50 pont)cpp17Időlimit túllépés 0/50600ms568 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;
    if(vertex >= ls/2){
        int e1 = 1; if(hw[vertex*2  ]) e1 = etp.at(vertex*2  );
        int e2 = 1; if(hw[vertex*2+1]) e1 = etp.at(vertex*2+1);
        return s + max(e1, e2);
    }

    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
base0/50
1Elfogadva0/01ms316 KiB
2Időlimit túllépés0/0591ms564 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/32ms316 KiB
8Hibás válasz0/33ms316 KiB
9Hibás válasz0/33ms316 KiB
10Hibás válasz0/34ms316 KiB
11Időlimit túllépés0/2600ms568 KiB
12Időlimit túllépés0/2600ms464 KiB
13Időlimit túllépés0/2578ms564 KiB
14Időlimit túllépés0/2575ms564 KiB
15Időlimit túllépés0/2574ms564 KiB
16Időlimit túllépés0/2577ms560 KiB
17Időlimit túllépés0/2600ms476 KiB
18Időlimit túllépés0/2588ms316 KiB
19Időlimit túllépés0/2592ms488 KiB
20Időlimit túllépés0/3596ms564 KiB
21Időlimit túllépés0/3583ms496 KiB
22Időlimit túllépés0/3589ms568 KiB
23Időlimit túllépés0/3583ms568 KiB