В массиве m хранится сумма на отрезке (без учёта полностью накрываемых запросов модификации), а в массиве mt, соответственно, — число, которое надо прибавить к каждому элементу отрезка.
Тогда, при модификации, для зелёных отрезков заносим в mt, а для синих — в m (так как они шире запроса). А при суммировании зелёные отрезки считаем как обычно + учитываем значения в mt, а для синих — только mt. Коэффициенты получаются из длины соответствующего отрезка, с помощью тех же формул, что и для перемещения между столбцами, в приведённых фрагментах кода их видно.
Тогда, при модификации, для зелёных отрезков заносим в mt, а для синих — в m (так как они шире запроса). А при суммировании зелёные отрезки считаем как обычно + учитываем значения в mt, а для синих — только mt. Коэффициенты получаются из длины соответствующего отрезка, с помощью тех же формул, что и для перемещения между столбцами, в приведённых фрагментах кода их видно.