| Codeforces Round 1098 (Div. 2) |
|---|
| Закончено |
Это сложная версия задачи. Отличие между версиями заключается в том, что в этой версии $$$1\le q \le 3\cdot 10^5$$$ и $$$1\le\mathrm{op}\le2$$$. Вы можете делать взломы только в том случае, если решили все версии этой задачи.
Для последовательности $$$s$$$ обозначим через $$$|s|$$$ её длину.
Для целочисленной неотрицательной последовательности $$$c$$$ определим $$$f(c)$$$ как сумму квадратов её префиксных сумм: $$$$$$ f(c)=\sum_{i=1}^{|c|}\left(\sum_{j=1}^{i} c_j\right)^2. $$$$$$
Теперь определим $$$g(b,m)$$$ следующим образом.
Пусть $$$b$$$ — целочисленная последовательность, такая что для каждого $$$i$$$ выполнено $$$b_i\ge -1$$$, а $$$m$$$ — целое неотрицательное число. Целочисленная неотрицательная последовательность $$$c$$$ называется допустимой для $$$(b,m)$$$, если выполнены все следующие условия:
Значение $$$g(b,m)$$$ определяется как сумма $$$f(c)$$$ по всем допустимым последовательностям $$$c$$$ для $$$(b,m)$$$. Если такой последовательности не существует, то $$$g(b,m)=0$$$.
Вам дан массив $$$a$$$ длины $$$n$$$, где $$$a_i\ge -1$$$, и $$$q$$$ запросов двух типов:
$$$^{\text{∗}}$$$Массив $$$a$$$ является подмассивом массива $$$b$$$, если $$$a$$$ может быть получен из $$$b$$$ удалением нескольких (возможно, ни одного или всех) элементов с начала и нескольких (возможно, ни одного или всех) элементов с конца.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Для каждого набора входных данных первая строка содержит два целых числа $$$n$$$ и $$$q$$$ ($$$1\leq n\leq 3\cdot 10^5$$$, $$$1\leq q\leq 3\cdot 10^5$$$).
Во второй строке содержится $$$n$$$ целых чисел $$$a_1,a_2,\ldots,a_n$$$ ($$$-1\leq a_i\leq 10^6$$$).
Затем следуют $$$q$$$ строк. Каждая строка описывает запрос в одном из следующих форматов. Первое целое число $$$\textrm{op}$$$ равно $$$1$$$ или $$$2$$$.
Гарантируется, что сумма значений $$$n$$$ по всем наборам входных данных не превосходит $$$3\cdot 10^5$$$.
Гарантируется, что сумма значений $$$q$$$ по всем наборам входных данных не превосходит $$$3\cdot 10^5$$$.
Для каждого набора входных данных для каждого запроса второго типа выведите на отдельной строке значение $$$g([a_l,a_{l+1},\ldots,a_r],m)$$$ по модулю $$$998\,244\,353$$$.
25 74 -1 7 6 -12 2 2 21 3 82 3 3 02 4 5 81 5 72 3 5 212 3 5 224 6-1 -1 -1 -12 1 1 42 1 2 52 1 3 62 1 4 71 3 32 1 4 5
40100701016205173612180286
В первом наборе входных данных:
В первом запросе $$$l=r=2$$$ и $$$m=2$$$. Подмассив равен $$$[a_2]=[-1]$$$, поэтому единственная допустимая последовательность — $$$c=[2]$$$. Следовательно, ответ равен $$$2^2=4$$$.
В четвёртом запросе $$$l=4$$$, $$$r=5$$$, и $$$m=8$$$. Подмассив равен $$$[a_4,a_5]=[6,-1]$$$. Поскольку $$$c_1$$$ фиксирован и равен $$$6$$$, а $$$c_1+c_2=m$$$, получаем $$$c=[6,2]$$$. Префиксные суммы равны $$$6$$$ и $$$8$$$, поэтому $$$$$$ f(c)=6^2+(6+2)^2=36+64=100. $$$$$$
Во втором наборе входных данных:
Во втором запросе подмассив равен $$$[a_1,a_2]=[-1,-1]$$$. Все допустимые последовательности удовлетворяют $$$c_1+c_2=5$$$ при $$$c_1,c_2\ge 0$$$, а именно $$$[0,5],[1,4],\ldots,[5,0]$$$. Сумма $$$f(c)$$$ по всем таким последовательностям равна $$$205$$$.
| Название |
|---|


