eolymp
bolt
Try our new interface for solving problems
Məsələlər

Менеджер памяти

Менеджер памяти

Одно из главных нововведений новейшей операционной системы \textit{Indows 7} - новый менеджер памяти. Он работает с массивом длины \textbf{N} и позволяет выполнять три самые современные операции: \begin{itemize} \item \textbf{copy(a, b, l)} - скопировать отрезок длины \textbf{\[a},\textbf{ a+l-1\]} в \textbf{\[b},\textbf{ b+l-1\]}; \item \textbf{sum(l, r)} - посчитать сумму элементов массива на отрезке \textbf{\[l, r\]}; \item \textbf{print(l, r)} - напечатать элементы с \textbf{l} по \textbf{r}, включительно. \end{itemize} Вы являетесь разработчиком своей операционной системы, и Вы, безусловно, не можете обойтись без инновационных технологий. Вам необходимо реализовать точно такой же менеджер памяти. \InputFile Первая строка входного файла содержит целое число \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{1000000}) - размер массива, с которым будет работать Ваш менеджер памяти. Во второй строке содержаться четыре числа \textbf{1} ≤ \textbf{X_1}, \textbf{A}, \textbf{B}, \textbf{M} ≤ \textbf{10^9+10}. С помощью них можно сгенерировать исходный массив чисел \textbf{X_1}, \textbf{X_2}, ..., \textbf{X_N}. \textbf{X_\{i+1\}=(A*X_i+B) mod M}. Следующая строка входного файла содержит целое число \textbf{K} (\textbf{1} ≤ \textbf{K} ≤ \textbf{200000}) - количество запросов, которые необходимо выполнить Вашему менеджеру памяти. Далее в \textbf{K} строках содержится описание запросов. Запросы заданы в формате: \begin{itemize} \item \textbf{cpy a b l} - для операции \textbf{copy}; \item \textbf{sum l r} - для операции \textbf{sum} (\textbf{l} ≤ \textbf{r}); \item \textbf{out l r} - для операции \textbf{print} (\textbf{l} ≤ \textbf{r}). \end{itemize} Гарантируется, что суммарная длина запросов \textbf{print} не превышает \textbf{3000}. Также гарантируется, что все запросы корректны. \OutputFile Для каждого запроса \textbf{sum} или \textbf{print} выведите в выходной файл на отдельной строке результат запроса.
Zaman məhdudiyyəti 10 saniyə
Yaddaşı istafadə məhdudiyyəti 512 MiB
Giriş verilənləri #1
6
1 4 5 7
7
out 1 6
cpy 1 3 2
out 1 6
sum 1 4
cpy 1 2 4
out 1 6
sum 1 6
Çıxış verilənləri #1
1 2 6 1 2 6
1 2 1 2 2 6
6
1 1 2 1 2 6
13