Byteasar 正在度过又一个周六的早晨,观看有线电视上众多的体育频道之一。今天他将观看 Byteotia 杯赛车比赛的总决赛,共有 $n$ 名车手参赛。每位车手都已经获得了一定数量的积分,但最后一场比赛可能会显著改变排名,因此 Byteasar 将会全神贯注地观看比赛。决赛的积分规则如下:第一名获得 $n$ 分,第二名获得 $n-1$ 分,第三名获得 $n-2$ 分,以此类推,直到最后一名获得 1 分——我们假设终点线处没有并列名次。接下来,这些积分将与每位选手之前获得的积分相加,最终总积分最高的所有选手将被命名为获胜者,赢得 Byteotia 杯。
为了增加趣味性,组织者在决赛前通过给予奖励和/或惩罚来调整分数。这些调整会随着时间推移公布,增加了每个人的兴奋感。我们的朋友 Byteasar 特别兴奋,他请求你编写一个程序,在分数调整公布时,跟踪有多少名车手可能在总排名中成为获胜者。具体来说,你的程序需要处理三种类型的查询:
B x y(奖励)——当前至少有 $x$ 分的每位车手获得额外的 $y$ 分;K x y(惩罚)——当前最多有 $x$ 分的每位车手失去 $y$ 分(注意,有些车手最终可能会得到负分);Z——查询在决赛前不再有任何分数变动的情况下,有多少名车手可能赢得 Byteotia 杯。
编写一个程序,读入每位选手目前获得的积分,应用组织者宣布的奖励和惩罚,回答 Byteasar 的问题,并将结果打印到标准输出。
输入格式
标准输入的第一行包含两个整数 $n$ 和 $q$,由空格分隔,分别指定比赛中的车手数量和查询数量(即组织者公告和 Byteasar 提问的总数)。
输入的第二行包含一个由 $n$ 个整数 $p_1, p_2, \dots, p_n$ 组成的序列($0 \le p_i \le 2 \cdot 10^6$),由空格分隔,指定每位车手的初始积分。
接下来的 $q$ 行,每行编码一个上述格式的查询。即,它包含一个字符 B、K 或 Z,以及(对于 B 和 K 查询)两个整数 $x, y$($-10^{18} \le x \le 10^{18}$,$0 \le y \le 10^6$),所有内容均由空格分隔。
保证至少会有一个 Z 类型的查询。
输出格式
对于每个后续的 Z 类型查询,其答案应打印在标准输出的新行上。
样例
输入格式 1
4 3 10 8 4 8 Z B 9 5 Z
输出格式 1
3 1
说明
在奖励发放之前,第一位车手拥有最多的积分,因此如果他在决赛中获得第一名,他肯定会赢得奖杯。如果第二位或第四位车手在决赛中获得第一名,且第一位车手获得第三或第四名,他们也将赢得奖杯。无论决赛结果如何,第三位车手都无法赢得奖杯。在应用奖励后,只有第一位车手(他是唯一获得 5 分奖励的人)可以赢得奖杯。
样例评分测试
- 1ocen: $n = 8$,一个
Z类型查询,$p_i = 2i - 2$,对于 $1 \le i \le n$。 - 2ocen: $n = 1000$,一个
Z类型查询,$1 \le p_i \le n + 5$,五名选手没有赢得奖杯的机会。 - 3ocen: $n = 300\,000$ 且 $q = 50\,000$,$p_i = n + 1 - i$,对于 $1 \le i \le n$,查询在以下四种之间循环(其中 $0 \le i < \frac{q}{4}$ 为循环编号):
ZK 2i 1ZB i + 1 1
子任务
测试集由以下子集组成。在每个子集中,可能有多个测试用例。所有测试用例均满足 $3 \le n \le 300\,000$,$1 \le q \le 500\,000$。
| 子任务 | 条件 | 分值 |
|---|---|---|
| 1 | $n \le 10, q = 1$ | 5 |
| 2 | $q = 1$ | 15 |
| 3 | $n \le 1000, q \le 2000$ | 10 |
| 4 | $q \le 50\,000$ | 35 |
| 5 | 无其他条件 | 35 |