Автор задачи и разработчик: Егор Юлин
Для решения данной задачи будем использовать дерево отрезком с отложенными операциями. Тогда первый и третий запрос — это стандартные запросы в дерево отрезков на изменение одного элемента и вычисление суммы на отрезке. Покажем, как можно выразить второй запрос.
Рассмотрим число $$$x$$$, которое меньше $$$2^k$$$, и запишем инвертированный $$$x$$$ как $$$\overline{x}$$$. Тогда $$$x \,\&\, \overline{x} = 0$$$. А тогда $$$x \oplus \overline{x} = x + \overline{x} = 2^k - 1$$$. Отсюда можно получить, что $$$\overline{x} = 2^k-1 - x$$$. Такое изменение несложно поддерживается на отрезке, если его разложить в