83722024-01-15 08:29:50gyjazminBináris fa magassága (50 pont)cpp17Accepted 50/50131ms6136 KiB
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;
int n, m;
vector<int> mmax;
void rekurzio(int oszlop, int sor) {
    if (sor > n) return;
    mmax[oszlop] = n - sor;
    rekurzio(oszlop * 2, sor + 1);
    rekurzio(oszlop * 2 + 1, sor + 1);
}
int main()
{
    cin >> n >> m;
    int N = pow(2, n);
    mmax.resize(N, 1);
    vector<int> magassag(N, 1);
    rekurzio(1, 1);
    vector<int> valasz;
    for (int i = 0; i < m; i++) {
        int egyik, masik;
        cin >> egyik >> masik;
        int cv = egyik / 2;
        magassag[egyik] =masik;
        do {
            mmax[cv] = max(mmax[cv*2] + magassag[cv * 2], mmax[cv*2 + 1] + magassag[2 * cv + 1]);
            cv /= 2;
        } while (cv >= 1);   
        valasz.push_back(mmax[1]);
    }    
    for (int x : valasz) {
        cout << x << endl;
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1808 KiB
2Accepted0/0122ms3700 KiB
3Accepted2/24ms2408 KiB
4Accepted2/24ms2648 KiB
5Accepted2/24ms2724 KiB
6Accepted2/24ms2880 KiB
7Accepted3/34ms3116 KiB
8Accepted3/34ms3204 KiB
9Accepted3/34ms3292 KiB
10Accepted3/34ms3532 KiB
11Accepted2/2116ms5244 KiB
12Accepted2/2122ms5496 KiB
13Accepted2/2104ms5472 KiB
14Accepted2/2112ms5636 KiB
15Accepted2/2119ms5720 KiB
16Accepted2/2130ms5884 KiB
17Accepted2/2101ms5972 KiB
18Accepted2/293ms6136 KiB
19Accepted2/290ms6044 KiB
20Accepted3/3123ms6060 KiB
21Accepted3/3130ms6056 KiB
22Accepted3/3131ms6100 KiB
23Accepted3/394ms6120 KiB