8254 2024. 01. 13 20:40:02 szil Bináris fa magassága (50 pont) cpp17 Elfogadva 50/50 35ms 8984 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int MAXN = 200'001;

int t[2*MAXN], tleft[MAXN], tright[MAXN], lazy[MAXN], edge_weight[MAXN];

void push(int v) {
    if (lazy[v]) {
        t[v] += lazy[v];
        lazy[2*v] += lazy[v];
        lazy[2*v+1] += lazy[v];
        lazy[v] = 0;
    }
}

void dfs(int v, int tl, int tr, int depth) {
    tleft[v] = tl; tright[v] = tr;
    if (tl == tr) {
        t[v] = depth;
    } else {
        int tm = (tl + tr) / 2;
        dfs(2*v, tl, tm, depth+1);
        dfs(2*v+1, tm+1, tr, depth+1);
        t[v] = max(t[2*v], t[2*v+1]);
    }
}

void upd(int v, int tl, int tr, int l, int r, int val) {
    if (l > r) return;
    if (tl == l && tr == r) {
        lazy[v] += val;
        push(v);
    } else {
        push(v);
        int tm = (tl + tr) / 2;
        upd(2*v, tl, tm, l, min(r, tm), val);
        upd(2*v+1, tm+1, tr, max(l, tm+1), r, val);
        push(2*v);
        push(2*v+1);
        t[v] = max(t[2*v], t[2*v+1]);
    }
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    fill(edge_weight, edge_weight+MAXN, 1);
    int n, m; cin >> n >> m;
    int nodes = 1<<(n-1);
    dfs(1, 1, nodes, 0);
    while (m--) {
        int u, val; cin >> u >> val;
        int tmp = val;
        val = val-edge_weight[u];
        edge_weight[u] = tmp;
        upd(1, 1, nodes, tleft[u], tright[u], val);
        cout << t[1] << "\n";
    }
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 4ms 3728 KiB
2 Elfogadva 0/0 28ms 6476 KiB
3 Elfogadva 2/2 3ms 4200 KiB
4 Elfogadva 2/2 3ms 4420 KiB
5 Elfogadva 2/2 4ms 4540 KiB
6 Elfogadva 2/2 4ms 4656 KiB
7 Elfogadva 3/3 4ms 4964 KiB
8 Elfogadva 3/3 4ms 5180 KiB
9 Elfogadva 3/3 4ms 5540 KiB
10 Elfogadva 3/3 3ms 5600 KiB
11 Elfogadva 2/2 35ms 7932 KiB
12 Elfogadva 2/2 35ms 8064 KiB
13 Elfogadva 2/2 35ms 8016 KiB
14 Elfogadva 2/2 34ms 8024 KiB
15 Elfogadva 2/2 34ms 8076 KiB
16 Elfogadva 2/2 28ms 8456 KiB
17 Elfogadva 2/2 28ms 8436 KiB
18 Elfogadva 2/2 28ms 8856 KiB
19 Elfogadva 2/2 28ms 8768 KiB
20 Elfogadva 3/3 28ms 8756 KiB
21 Elfogadva 3/3 28ms 8984 KiB
22 Elfogadva 3/3 28ms 8976 KiB
23 Elfogadva 3/3 28ms 8884 KiB