#P2710. 数列

数列

题目描述

维护一个数列,共 77 种操作:

I. INSERT x n a1 a2 .. an 在第 xx 个数后插入 nn 个数分别为 a1…ana_1\dots a_n。

II. DELETE x n 删除第 xx 个数开始的 nn 个数。

III. REVERSE x n 翻转第 xx 个数开始的 nn 个数的区间。

IV. MAKE-SAME x n t 将第 xx 个数开始的 nn 个数统一改为 tt。

V. GET-SUM x n 输出第 xx 个数开始的 nn 个数的和。

VI. GET x 输出第 xx 个数的值。

VII. MAX-SUM x n 输出第 xx 个数开始的 nn 个数的非空最大连续子序列和。

输入格式

第一行为 NN,MM,NN 表示初始序列中数的个数,MM 表示操作的个数。

第二行为 NN 个数 A1…AnA_1\dots A_n,表示初始序列。

第三行到第 M+2M+2 行,每行一个操作。

输出格式

输出每个GET-SUM,GET,MAX-SUM操作的结果。

9 8
2 -6 3 5 1 -5 -3 6 3
GET-SUM 5 4
MAX-SUM 1 9
INSERT 8 3 -5 7 2
DELETE 12 1
MAKE-SAME 3 3 2
REVERSE 3 6
GET 5
MAX-SUM 1 11
-1
10
-5
10

提示

共 2020 组数据,每组数据随机生成,
保证每个时刻数列里的数不超过 200000200000 个,
任何一个输入的数字均在 −1000∼1000-1000\sim1000之间,结果不超过 2302^{30}。

第 1∼21\sim2 组 1≤N≤5\quad1\le N\le 5,1≤M≤101\le M\le 10。

第 3∼43\sim4 组 1≤N≤10\quad1\le N\le 10,1≤M≤201\le M\le 20。

第 5∼65\sim6 组 1≤N≤20\quad1\le N \le 20,1≤M≤501\le M\le 50。

第 7∼87\sim8 组 1≤N≤50\quad1\le N\le 50,1≤M≤1001\le M\le 100。

第 9∼109\sim10 组 1≤N≤100\quad1\le N\le 100,1≤M≤5001\le M\le 500。

第 11∼1211\sim12 组 1≤N≤1000\quad 1\le N\le 1000,1≤M≤10001\le M\le 1000。

第 13∼1413\sim14 组 1≤N≤5000\quad1\le N\le 5000,1≤M≤20001\le M\le 2000。

第 15∼1615\sim16 组 1≤N≤104\quad1\le N\le 10^4,1≤M≤50001\le M\le 5000。

第 17∼1817\sim18 组 1≤N≤105\quad1\le N\le 10^5,1≤M≤1041\le M\le 10^4。

第 19∼2019\sim20 组 1≤N≤2×105\quad1\le N\le 2\times 10^5,1≤M≤2×1041\le M\le 2\times 10^4。