快乐:我把它吃了:快乐。
Leopold 和 Molly 都喜欢蛋糕:Leopold 喜欢吃蛋糕,而 Molly 喜欢看 Leopold 吃蛋糕。今天,他们买来了 $N$ 块蛋糕。这些蛋糕排成一排放在一个狭长的盘子里。从左到右,位置依次编号为 $1$ 到 $N$。蛋糕也同样进行了编号,第 $i$ 块蛋糕位于位置 $i$。
在吃蛋糕时,Leopold 会考虑蛋糕的美味度。对于每块蛋糕 $i$,他都确切地知道其初始美味度 $d_i$。他会从某块蛋糕 $a$ 开始吃起;此时,位置 $a$ 变为空。此后,他下一次吃掉的蛋糕总是与已有空位相邻的蛋糕中美味度最低的那一块。因此,在任何时刻,所有的空位都构成一个连续的闭区间。为了让事情变得更有趣,Molly 偶尔会给某块蛋糕加上配料以增加其美味度。她每次进行此操作时,都会使该蛋糕成为当前前 10 美味的蛋糕之一。在任何时刻,都不会有两块蛋糕的美味度相同。
有时,Molly 想知道,在不考虑后续美味度提升的情况下,Leopold 在吃掉某块特定的蛋糕 $b$ 之前会吃掉多少块蛋糕。请帮助 Molly 编写一个程序,能够处理以下两种形式的操作:“提升某块蛋糕的美味度”或“求出 Leopold 在吃掉某块特定蛋糕之前会吃掉的蛋糕数量”。
输入格式
第一行包含两个整数 $N$($1 \le N \le 250\,000$),表示蛋糕的数量,以及 $a$($1 \le a \le N$),表示 Leopold 首先吃掉的蛋糕编号。
第二行包含 $N$ 个互不相同的整数 $1 \le d_1, \dots, d_N \le N$,表示蛋糕的初始美味度。
第三行包含一个整数 $Q$($1 \le Q \le 500\,000$),表示要处理的操作数量。
接下来的 $Q$ 行,每行包含以下两种类型之一的操作:
E i e(字符E后跟两个整数 $1 \le i \le N$ 和 $1 \le e \le 10$):该操作表示蛋糕 $i$ 的美味度得到提升,使其成为当前唯一第 $e$ 美味的蛋糕。保证在提升之前,美味度大于蛋糕 $i$ 的蛋糕数量至少为 $e$。F b(字符F后跟一个整数 $1 \le b \le N$):该操作要求你的程序输出 Leopold 在吃掉蛋糕 $b$ 之前会吃掉多少块蛋糕。
输出格式
对于每个 F 类型的一步操作,按照它们在输入中出现的顺序,输出一行包含一个整数,即所求的蛋糕数量。
数据范围
$N \le 250\,000$,$Q \le 500\,000$
- 子任务 1(15 分):$N, Q \le 10\,000$
- 子任务 2(15 分):$N \le 25\,000$,且最多有 $500$ 个
F类型的操作。 - 子任务 3(20 分):$Q \le 100\,000$,且最多有 $100$ 个
E类型的操作。 - 子任务 4(50 分):无附加限制。
样例
输入 1
5 3 5 1 2 4 3 17 F 1 F 2 F 3 F 4 F 5 E 2 1 F 1 F 2 F 3 F 4 F 5 E 5 2 F 1 F 2 F 3 F 4 F 5
输出 1
4 1 0 2 3 4 3 0 1 2 4 3 0 1 2
说明
在第一次提升美味度之前,蛋糕会被依次吃掉,顺序为:$3, 2, 4, 5, 1$。但在提升之后,第 $2$ 块蛋糕变得太美味了,以至于不会很快被吃掉。第 $4$ 块和第 $5$ 块蛋糕会先被吃掉。然而,最后一次对第 $5$ 块蛋糕的提升对吃蛋糕的顺序没有影响。