eolymp
bolt
Try our new interface for solving problems
Problems

Возвращение блудного попугая

Возвращение блудного попугая

\includegraphics{https://static.e-olymp.com/content/ab/ab067956b71599fb72873d3f2d94ced5a02b1866.jpg} В этой задаче Вовка захотел научить Кешу считать. Для этого он придумал такую игру: Вовка напишет последовательность чисел, а затем будет давать Кеше пары чисел \textbf{l}, \textbf{r} для каждой из которых попугай должен будет найти такую подпоследовательность, что сумма ее элементов \textbf{a_i + a_i_\{+1\} … +a_j_\{-1\} + a_j}, где \textbf{i} и \textbf{j} находятся между \textbf{l} и \textbf{r}, будет максимальной. Известно, что каждое утро Вовка может изменить (а может и оставить прежним) некоторое число в массиве, а вечером он задаст Кеше одну или несколько таких задачек. Ваша задача помочь Кеше, а именно, написать программу, которая будет находить максимальную сумму при описанных выше условиях. \InputFile В первой строке находятся числа \textbf{N}, \textbf{D} (\textbf{1} ≤ \textbf{N}, \textbf{D} ≤ \textbf{10^6}) -- длина последовательности и количество дней, в которые Вовка учил Кешу. Во второй строке \textbf{N} чисел -- начальное состояние последовательности. Все числа по модулю не превышают \textbf{10^9}. Далее следует \textbf{M} (\textbf{1} ≤ \textbf{M} ≤ \textbf{10^5}) чисел -- количество дней, в которые Вовка изменял последовательность. В следующих \textbf{M} строках находится по три числа -- \textbf{d}, \textbf{x}, \textbf{y}, где \textbf{d} -- это номер дня, \textbf{x} -- позиция изменяемого элемента, \textbf{y} -- новое значение данного элемента. Гарантируется, что дни заданы в хронологическом порядке, а также каждое число не превышает \textbf{D}. В один день Вовка мог изменить несколько элементов. Далее следует число \textbf{K} (\textbf{1} ≤ \textbf{K} ≤ \textbf{10^5}) -- количество дней, в которые Кеша хочет обратиться к Вам за помощью. Каждый запрос будет представлять собой два числа \textbf{l}, \textbf{r} -- границы отрезка, на котором нужно посчитать максимальную сумму, а день, в который Кеша обращался к Вам с данным запросом, будет рассчитываться следующим образом: \textbf{d = (z+i) \% D + 1}, где \textbf{z} -- это ответ на предыдущий запрос (для первого запроса считать, что \textbf{z = 0}), \textbf{i }-- номер текущего запроса. Все номера запросов и позиции в последовательности начинаются с единицы. \OutputFile Выведите \textbf{K} строк, в каждой по одному числу -- ответу на запрос.
Time limit 5 seconds
Memory limit 256 MiB
Input example #1
5 5
1 -2 3 4 5
3
1 3 -3
3 1 10
4 5 1
3
1 5
2 4
1 5
Output example #1
9
4
14
Author Alexandr Burkov
Source Distance Summer Computer School - Summer 2013