P10541: 维护数列
传统题
2.000s
时间限制
64MB
内存限制
1 提交
0 解决
【题目描述】
请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格)
操作编号
|
输入文件中的格式
|
说明
|
1. 插入
|
INSERT_posi_tot_c1_c2_..._ctot
|
在当前数列的第 posi 个数字后插入 tot 个数字:c1, c2, …, ctot;若在数列首插 入,则 posi 为 0
|
2. 删除
|
DELETE_posi_tot
|
从当前数列的第 posi 个数字开始连续 删除 tot 个数字
|
3. 修改
|
MAKE-SAME_posi_tot_c
|
将当前数列的第 posi 个数字开始的连 续 tot 个数字统一修改为 c
|
4. 翻转
|
REVERSE_posi_tot
|
取出从当前数列的第 posi 个数字开始 的 tot 个数字,翻转后放入原来的位置
|
5. 求和
|
GET-SUM_posi_tot
|
计算从当前数列开始的第 posi 个数字 开始的 tot 个数字的和并输出
|
6. 求和最大的子列
|
MAX-SUM
|
求出当前数列中和最大的一段子列,并输出最大和
|
【输入】
输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M表示要进行的操作数目。
第 2 行包含 N 个数字,描述初始时的数列。
以下 M 行,每行一条命令,格式参见问题描述中的表格。
【输出】
对于输入数据中的 GET-SUM 和 MAX-SUM 操作,向输出文件依次打印结果,每个答案(数字)占一行。
【样例输入】复制
9 8
2 -6 3 5 1 -5 -3 6 3
GET-SUM 5 4
MAX-SUM INSERT 8 3 -5 7 2
DELETE 12 1
MAKE-SAME 3 3 2
REVERSE 3 6
GET-SUM 5 4
MAX-SUM
【提示】
NOI 2005