135992025-01-08 11:08:37gyjazminBináris fa magassága (50 pont)cpp17Elfogadva 50/50119ms1076 KiB
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;
int n, m,maxi;
vector<int> f;
vector<int> sz;
void szamol(int k){
    if (k * 2 < pow(2, n)) {        
        szamol(k * 2);
        szamol(k * 2 + 1);
        int s =f[k];
        s += max(sz[k * 2], sz[k * 2 + 1]);
        sz[k] = s;
    }
}
int main()
{
    cin >> n >> m;
    f.resize(pow(2, n), 1);
    sz.resize(pow(2, n));
    szamol(1);
    for (int i = 0; i < m; i++) {
        int cs = 0, h = 0;
        cin >> cs >> h;
        int ks = h - f[cs]; 
        f[cs] = h;
        while (cs / 2 >= 1) {
            sz[cs / 2] = max(sz[cs / 2 * 2] + f[cs / 2 * 2], sz[cs / 2 * 2 + 1] + f[cs / 2 * 2 + 1]);
            cs /= 2;
        }
        cout << sz[1] << endl;
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/0108ms1076 KiB
3Elfogadva2/23ms504 KiB
4Elfogadva2/23ms316 KiB
5Elfogadva2/23ms316 KiB
6Elfogadva2/23ms316 KiB
7Elfogadva3/33ms316 KiB
8Elfogadva3/33ms316 KiB
9Elfogadva3/33ms316 KiB
10Elfogadva3/33ms316 KiB
11Elfogadva2/2112ms956 KiB
12Elfogadva2/2114ms1076 KiB
13Elfogadva2/2116ms1012 KiB
14Elfogadva2/2112ms1076 KiB
15Elfogadva2/2119ms1004 KiB
16Elfogadva2/2108ms1076 KiB
17Elfogadva2/2108ms992 KiB
18Elfogadva2/2108ms948 KiB
19Elfogadva2/2108ms1076 KiB
20Elfogadva3/3108ms1076 KiB
21Elfogadva3/3112ms1076 KiB
22Elfogadva3/3108ms1072 KiB
23Elfogadva3/3104ms1076 KiB