Monkeyland 是一个无限长的数轴,上面有 $n$ 只猴子,编号从 $1$ 到 $n$。第 $i$ 只猴子初始位于数轴上的位置 $p[i]$。多只猴子可能处于同一个初始位置。
Pan 可以用他的魔法咒语让每只猴子移动!每只猴子的移动方式由一个长度为 $n$ 的字符串 $d$ 决定,其中每个字符要么是 L,要么是 R。设 $d$ 的第 $i$ 个字符为 $d[i]$。
一旦施放咒语,第 $i$ 只猴子的移动方式如下:
- 如果 $d[i] = \text{L}$,它向左移动一个单位。
- 如果 $d[i] = \text{R}$,它向右移动一个单位。
每天,Pan 都会施放一次咒语。如果两只猴子在任何一天(包括初始时刻)处于相同的位置,它们就会成为朋友。如果 Pan 连续施放 $k$ 天咒语,请确定会成为朋友的猴子对数。
输入格式
程序必须从标准输入读取数据。
第一行包含两个空格分隔的整数 $n$ 和 $k$。 第二行包含 $n$ 个空格分隔的整数 $p[1], p[2], \dots, p[n]$。 第三行包含一个长度为 $n$ 的字符串 $d$,由 $d[1], d[2], \dots, d[n]$ 组成。
输出格式
程序必须输出到标准输出。
输出一个整数,表示会成为朋友的猴子对数。
输出应仅包含一个整数。不要打印任何额外文本,例如 Enter a number 或 The answer is。
数据范围
对于所有测试用例,输入满足以下限制:
- $1 \le n \le 200\,000$
- $1 \le k \le 10^9$
- $1 \le p[i] \le 10^9$,对于所有 $1 \le i \le n$
- $d[i]$ 为 L 或 R,对于所有 $1 \le i \le n$
你的程序将在满足以下限制的输入实例上进行测试:
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 0 | 0 | 样例测试用例 |
| 1 | 6 | $n = 2$ |
| 2 | 13 | $d[1] = d[2] = \dots = d[n]$ |
| 3 | 10 | $n, k \le 200$ |
| 4 | 22 | $n, k \le 3000$ |
| 5 | 18 | $n \le 3000$ |
| 6 | 31 | 无附加限制 |
样例
输入格式 1
2 1 1 3 RL
输出格式 1
1
说明 1
共有 $n = 2$ 只猴子,Pan 仅施放了 $k = 1$ 天咒语。 第一天,猴子 1 从位置 1 向右移动到位置 2,而猴子 2 从位置 3 向左移动到位置 2。由于它们在第一天结束时处于相同位置,它们成为了朋友。因此,恰好有 1 对猴子成为朋友。
输入格式 2
5 67 1 2 3 4 5 RRRRR
输出格式 2
0
说明 2
共有 $n = 5$ 只猴子,Pan 连续施放了 $k = 67$ 天咒语。 由于所有猴子的初始位置各不相同,且每只猴子在施放咒语时每天向右移动一个单位,因此在任何一天,都不会有两只猴子处于相同位置。因此,没有猴子对会成为朋友。
输入格式 3
6 7 1 1 8 16 18 22 RRLRLL
输出格式 3
3
输入格式 4
10 30 9 46 27 8 12 100 56 96 6 7 LRLRRLRRLR
输出格式 4
5
输入格式 5
4 2 3 4 4 6 LLRL
输出格式 5
2
说明 5
共有 $n = 4$ 只猴子,Pan 连续施放了 $k = 2$ 天咒语。 下图展示了 Monkeyland 作为数轴,仅显示位置 1 到 6。每只猴子上面的箭头表示施放咒语后它将移动的方向。
在第 0 天,所有猴子的初始位置如下图所示。已经在位置 4 的猴子 2 和 3 成为朋友。
在第 1 天施放咒语后,所有猴子的位置如下图所示。猴子 3 和 4 在位置 5 相遇并成为朋友。
在第 2 天施放咒语后,所有猴子的位置如下图所示。这一天没有两只猴子相遇。
因此,总共有 2 对猴子成为朋友:猴子 2 和 3,以及猴子 3 和 4。