eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Криптекс

Криптекс

\includegraphics{https://static.e-olymp.com/content/9f/9f2b2cd179be0a090d2aef2ae475596ad5370440.jpg} Роберт Ленгдон знайшов стародавній криптекс на якому замість літер в кожній клітинці записано деяке число. Криптекс - це циліндр у якого \textbf{M }рядків та \textbf{N} стовпців. Рядки пронумеровані від \textbf{0} до \textbf{M-1} та стовпці від \textbf{0} до \textbf{N-1}. У кожній клітинці криптекса записані натуральні числа. Кожний рядок криптекса крутиться вліво та вправо. Щоб відкрити криптекс Роберту потрібно вміти швидко крутити рядки, а також швидко підраховувати суму чисел на деякому прямокутнику. Для кожного запиту про підрахунок суми на прямокутнику вивести дану суму на екран. \InputFile У першому рядку задається \textbf{2} числа: \textbf{N}, \textbf{M} -- розіміри криптекса (\textbf{1} ≤ \textbf{N}, \textbf{M} ≤ \textbf{1000}). У наступних \textbf{M} рядках у кожному рядку по \textbf{N} чисел -- числа, які записані у початковій конфігурації криптекса (матриця \textbf{А}, \textbf{0} ≤ \textbf{A_ij} ≤ \textbf{1000}). У наступному рядку \textbf{Q} -- кількість запитів (\textbf{1} ≤ \textbf{Q} ≤ \textbf{1000}). Всього є \textbf{3} типи запитів: \begin{itemize} \item \textbf{? a b c d} -- порахувати суму на прямокутнику: \textbf{a} ≤ \textbf{i} ≤ b, \textbf{c} ≤ \textbf{j} ≤ \textbf{d}: \textbf{a}, \textbf{b} -- номери рядків, \textbf{c}, \textbf{d} -- номери стовпців (\textbf{1} ≤ \textbf{a} ≤ \textbf{b} ≤ \textbf{M}, \textbf{1} ≤ \textbf{c}, \textbf{d} ≤ \textbf{N}. Якщо \textbf{c} > \textbf{d} тоді треба порахувати суму на двох прямокутниках \textbf{(a, b, c, n-1)} та\textbf{(a, b, 0, d)}); \item \textbf{ml l r val} -- покрутити усі рядки від \textbf{l} до \textbf{r} включно на \textbf{val} позицій вліво; \item \textbf{mr l r val} -- покрутити всі рядки від \textbf{l} до \textbf{r} включно на \textbf{val} позицій вправо (\textbf{1} ≤ \textbf{l} ≤ \textbf{r} ≤ \textbf{M}, \textbf{1} ≤ \textbf{val} ≤ \textbf{1000}). \end{itemize} \OutputFile На всі запити типу "\textbf{?}" вивести відповідь на даний запит.
Ліміт часу 8 секунд
Ліміт використання пам'яті 512 MiB
Вхідні дані #1
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
7
? 0 3 0 3
? 1 3 1 3
ml 1 2 2
? 1 3 1 3
? 0 3 1 2
mr 2 3 1
? 0 3 1 2
Вихідні дані #1
136
99
95
68
68
Автор Остап Столярчук
Джерело Дистанційна Літня Комп`ютерна Школа - літо 2013 року