83722024-01-15 08:29:50gyjazminBináris fa magassága (50 pont)cpp17Elfogadva 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;
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1808 KiB
2Elfogadva0/0122ms3700 KiB
3Elfogadva2/24ms2408 KiB
4Elfogadva2/24ms2648 KiB
5Elfogadva2/24ms2724 KiB
6Elfogadva2/24ms2880 KiB
7Elfogadva3/34ms3116 KiB
8Elfogadva3/34ms3204 KiB
9Elfogadva3/34ms3292 KiB
10Elfogadva3/34ms3532 KiB
11Elfogadva2/2116ms5244 KiB
12Elfogadva2/2122ms5496 KiB
13Elfogadva2/2104ms5472 KiB
14Elfogadva2/2112ms5636 KiB
15Elfogadva2/2119ms5720 KiB
16Elfogadva2/2130ms5884 KiB
17Elfogadva2/2101ms5972 KiB
18Elfogadva2/293ms6136 KiB
19Elfogadva2/290ms6044 KiB
20Elfogadva3/3123ms6060 KiB
21Elfogadva3/3130ms6056 KiB
22Elfogadva3/3131ms6100 KiB
23Elfogadva3/394ms6120 KiB