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 |