幼儿园大班的 N 个同学坐成一排,位置编号为 1 \sim N,每个同学在坐下来之后会立刻得到一定数量的糖。
接下来老师会有 3 种不同的操作:
发糖:给 [L,R] 之间的每个同学发 X 颗糖。
找最少:查询 [L,R] 之间糖最少的同学有几颗糖。
统计:查询 [L,R] 之间所有的同学,一共拿到了多少颗糖。
同学们在整个发糖的过程中,都不会吃糖。
请编程帮助老师完成上述的发糖操作。
第 1 行有两个整数 N 和 M,代表了同学的总数以及操作的总数。
第 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 200000,1 \le M \le 100000,1 \le X \le 100000。
每位同学刚坐下来时,得到的糖果数量不超过 100000 颗。
东方博宜OJ