#NK202506G. 转身

转身

题目描述

在一条数轴上有 nn 个人,位置为 1,2,,n1,2,\dots,n,每个人面朝左(L\mathrm{L})或右(R\mathrm{R})。给定长度为 nn 的字符串 SS(仅包含字符 L\mathrm{L}R\mathrm{R}),表示每个人的初始朝向:若 Si=LS_i=\mathrm{L} 则第 ii 个人面朝左,若 Si=RS_i=\mathrm{R} 则面朝右。

在每个离散时刻,同时对所有满足“面对面”的相邻对进行翻转:若在某一时刻位置 ii 的人面朝右(R\mathrm{R})且位置 i+1i+1 的人面朝左(L\mathrm{L}),即出现子串 RL\mathrm{RL},则在该步结束时这两个人同时转身(R\mathrm{R} 变为 L\mathrm{L}L\mathrm{L} 变为 R\mathrm{R})。所有判断基于该步开始时的状态并并发更新。

当字符串中不再包含子串 RL\mathrm{RL}(即不存在相邻面对面的人)时,过程停止。问从初始状态到稳定状态所需的步骤数(步数为非负整数)。

此外有 qq 次修改操作。每次给出一个索引 xx1xn1\le x\le n),表示把第 xx 个人的初始朝向翻转(LR\mathrm{L}\leftrightarrow\mathrm{R})。每次修改后,重新计算并输出所需步数

输入格式

第一行包含两个整数 nnqq1n2105,1q2105.1\le n \le 2\cdot 10^{5}, 1\le q\le 2\cdot 10^5. 第二行包含长度为 nn 的字符串 SS,仅含字符 L\mathrm{L}R\mathrm{R},表示初始朝向(位置索引从 11nn)。

接下来 qq 行,每行包含一个整数 xx1xn1\le x\le n),表示翻转位置 xx 的字符(基于上一次修改后的字符串)。

输出格式

输出 qq 行。第 ii 行为在应用第 ii 次修改后的初始字符串出发,到达稳定状态所需的步骤数(非负整数)。

输入输出样例 #1

输入 #1

5 5
LRLRL
5
1
3
4
3

输出 #1

1
2
0
3
3

输入输出样例 #2

输入 #2

5 5
RLLLL
1
2
3
4
5

输出 #2

0
3
3
3
0