308
правок
Изменения
Учёт отсутствия коммутативности
==Псевдокод==
Пусть результат считаем на отрезке [left, right]. При этом значения left и right, передающиеся в функцию, должны указывать на листья дерева (необходимо увеличить значение на индекс массива, с которого начинаются листья). Переменные left_res и right_res будут собирать значения на отрезках, отделившихся соответственно слева или справа от рассматриваемого.
query(left, right)
'''while''' left < right
'''if''' left mod 2 == 0
left = left div 2;
'''if''' right mod 2 == 1
'''if''' left == right
==Ссылки==