2970 - 发糖

题目描述

幼儿园大班的 N 个同学坐成一排,位置编号为 1 \sim N,每个同学在坐下来之后会立刻得到一定数量的糖。

接下来老师会有 3 种不同的操作:

  1. 发糖:给 [L,R] 之间的每个同学发 X 颗糖。

  2. 找最少:查询 [L,R] 之间糖最少的同学有几颗糖。

  3. 统计:查询 [L,R] 之间所有的同学,一共拿到了多少颗糖。

同学们在整个发糖的过程中,都不会吃糖。

请编程帮助老师完成上述的发糖操作。

输入

1 行有两个整数 NM,代表了同学的总数以及操作的总数。

2 行有 N 个整数,代表每个同学坐下来之后得到糖果的数量。

接下来 M 行,每行先大写字母表示操作类型。如果大写字母是 P,表示发糖。如果大写字母是 M,表示找最少。如果大写字母是 S,表示统计。

每行紧跟着大写字母的是两个整数 L,R 表示操作范围,如果操作类型是发糖,会继续读入第三个整数 X

输出

输出若干行,每行一个整数,针对第 2,3 两种操作,输出对应的结果。

样例

输入

4 5
3 1 2 4
M 3 4
S 1 3
P 2 3 1
M 3 4
S 1 3

输出

2
6
3
8
说明

数据范围

1 \le N \le 2000001 \le M \le 1000001 \le X \le 100000

每位同学刚坐下来时,得到的糖果数量不超过 100000 颗。

来源

东方博宜OJ

标签
题目参数
时间限制 1 秒
内存限制 256 MB
提交次数 286
通过人数 163
金币数量 1 枚
难度 入门


上一题 下一题