Корневая декомпозиция




У нас есть задача, о том как быстро считать суммы на отрезке l...r в массиве a, в котором элементы могут изменяться по одному, за асимптотику меньшую, чем O(n).
Эта задача решается аналогично прошлой, но при запросе изменения необходимо поменять сумму в соответствующем блоке.

Task
Time limit: 3000 ms,
Memory limit: 256 Mb

Дан массив a длины n (1 <= n <= 2 * 10^6, 1 <= ai <= 10^9). Также даны m (1 <= m <= 500) запросов вида t, l, r (0 <= t <= 1, 1 <= l <= r <= n).
Если t = 0, то на запрос нужно вывести сумму чисел на отрезке от l до r включительно, если t = 1, то элементу с номером l присваивается значение r.
Элементы нумеруются с 1 до n.
 
Ввод Вывод
5
1 2 3 4 5
4
0 1 2
1 1 5
0 1 2
0 1 1
3
7
5

Auto CHOOSE THE PROGRAMMING NECESSARY LANGUAGE!
Attach the program source file:
or enter the source code in the language:

Rules for designing programs and a list of errors during automatic task verification
           

Results: