Сначала вам задан массив из N
целых чисел (1<=N<=105)
. Учитывая этот массив, вы должны выполнить 2 вида операций:как мы можем добавить элемент в начало массива в каждой операции и вычислить сумму любого заданного диапазона.?
(i) Operation 1 : Op1(l, r)
Вам дается 2 целых числа l
и r
. (1 <= l <= r <= current size of the array)
. Вам нужно вернуть сумму всех элементов с индексами между l
и r
(оба включительно). То есть, если элементы, находящиеся в настоящее время в массиве, являются a1, a2, a3 .... an, вам необходимо вернуть следующее sum : al + al+1 + al+2 ... + ar
.
(ii) Operation 2 : Op2(x)
Вам предоставляется целое число x (|x| <= 109)
. Добавьте этот элемент в начало массива. После этой операции x
теперь станет a1
, old a1
теперь станет a2
и т. Д. Размер массива увеличится на 1
.
Я сделал дерево сегментов с начальным заданным массивом и мог вычислять сумму диапазона .... но как я мог добавить один элемент в дереве сегментов и соответствующим образом изменить его?