Изменения

Перейти к: навигация, поиск
Псевдокод
* <tex> d</tex> {{---}} несогласованность.
// Процедура "проталкивания" несогласованности детям void push(int node) { tree[2 * node + 1].d += tree[node].d; tree[2 * node + 2].d += tree[node].d; tree[node].d = 0; }
int get_min(int node, int a, int b) {
// node - текущая вершина, a и b - границы запроса
if [l, r) == [a, b)
return tree[node].min + tree[node].d;
// "проталкиваем" несогласованность детям tree[2 * push(node + 1].d += tree[node].d; tree[2 * node + 2].d += tree[node].d; tree[node].d = 0);
int m = (l + r) / 2;
int ans = min(get_min (node * 2 + 1, a, min(b, m)),
return;
tree[2 * push(node + 1].d += tree[node].d; tree[2 * node + 2].d += tree[node].d; tree[node].d = 0);
// Вызываем обновление детей
update(2 * node + 1, a, b, val);
Анонимный участник

Навигация