#P1024. 能量晶阵巡检

能量晶阵巡检

题目描述

星港中有一排能量晶石,共有 NN 块,从左到右编号为 1,2,,N1,2,\ldots,N

每块晶石一开始都有一个正整数能量值,并且初始能量值不超过 10001000。维护员会对这些晶石进行若干次操作。

有一种充能操作,可以选择一段连续编号的晶石 [L,R][L,R],并让这段区间内每块晶石的能量值都增加一个整数 WW。当 L=RL=R 时,表示只给编号为 LL 的那一块晶石充能。

此外,巡检员会不定期进行检测:给出一段区间 [L,R][L,R] 和一个标准值 CC,询问这段区间中有多少块晶石当前的能量值大于等于 CC

请你按照操作顺序处理所有充能与检测请求,并回答每一次检测。

输入格式

第一行包含两个整数 N,QN,Q,表示晶石数量以及操作总数。

第二行包含 NN 个正整数,第 ii 个整数表示第 ii 块晶石的初始能量值。

接下来 QQ 行,每行表示一次操作,格式如下:

若第一个字符为 M,则后面跟着三个整数 L,R,WL,R,W,表示将编号在闭区间 [L,R][L,R] 内的所有晶石能量值都增加 WW

若第一个字符为 A,则后面跟着三个整数 L,R,CL,R,C,表示询问编号在闭区间 [L,R][L,R] 内,有多少块晶石的能量值大于等于 CC

输出格式

对于每一次 A 操作,输出一行一个整数,表示对应区间内能量值大于等于 CC 的晶石数量。

输入输出样例

输入

6 5
3 8 1 6 4 7
A 2 6 6
M 3 5 4
A 1 5 8
M 1 2 2
A 1 6 9

输出

3
3
2

样例解释

初始能量值为:

3 8 1 6 4 7

第一次检测区间 [2,6][2,6],其中能量值大于等于 66 的晶石有 8,6,78,6,7,所以答案为 33

随后对区间 [3,5][3,5] 每块晶石增加 44,能量值变为:

3 8 5 10 8 7

第二次检测区间 [1,5][1,5],其中能量值大于等于 88 的晶石有 8,10,88,10,8,所以答案为 33

接着对区间 [1,2][1,2] 每块晶石增加 22,能量值变为:

5 10 5 10 8 7

最后检测区间 [1,6][1,6],其中能量值大于等于 99 的晶石有 10,1010,10,所以答案为 22

数据范围

对于 3030% 的数据,满足 N1000N \le 1000Q1000Q \le 1000

对于 100100% 的数据,满足:

$$N \le 10^6,\quad Q \le 3000,\quad 1 \le W \le 1000,\quad 1 \le C \le 10^9$$

每块晶石的初始能量值均为不超过 10001000 的正整数。