魔法
题目描述
有 \(n\) 个小球排成一行,每个小球是红色或者蓝色。开始你被给定了两个非负整数 \(R\) 和 \(B\) 。
每次你可以施展一个魔法,每次魔法你可以选择任意不同的 \(R+B\) 个球,将这些球全部变成白色,但是需要满足下列条件:
\(1\)、你选择的 \(R+B\) 个球中,需要有恰好 \(R\) 个红球和恰好 \(B\) 个蓝球。
\(2\)、你选择的 \(R+B\) 个球中,最左端的球和最右端的球之间,不能有之前已经变成白色的球。
问是否能用若干次魔法将所有球都变成白色,若可以请输出任意一组方案。
格式
输入格式
第一行三个整数 \(n,R,B\) ,含义见题目描述。
第二行一个长度为 \(n\) 的只含 \(\text{R}\) 或 \(\text{B}\) 的字符串,第 \(i\) 个字符表示第 \(i\) 个球的颜色, \(\text{R}\) 表示红色, \(\text{B}\) 表示蓝色。
输出格式
如果不存在合法方案,你只要输出一行 \(\text{NO}\) 即可。
否则如果存在合法方案,你需要在第一行输出一个 \(\text{YES}\) ,在第二行输出一个整数 \(S\) 表示使用魔法的次数。<br>接下来 \(S\) 行,每行 \(R+B\) 个整数,表示每一次魔法选中的球的编号。
请注意,每一行内的编号可以按照任意顺序,但是这 行需要按照时间顺序从前到后输出。如果有多组合法解,你只要输出任意一组即可。
样例1
样例输入1
6 1 1
RBBRRB
样例输出1
YES
3
1 6
2 5
3 4
限制
本题采用子任务捆绑测试。对于每个子任务,你只有通过了这个子任务的所有数据,才能获得这个子任务的分数。
子任务 \(1\) ( \(10\) 分): \(R=0\) ;
子任务 \(2\) ( \(20\) 分): \(R=B=1\) ;
子任务 \(3\) ( \(15\) 分): \(n\le 10\) ;
子任务 \(4\) ( \(55\) 分): \(n\le 200\) ;
对于所有数据, \(R,B\ge 0,1\le R+B\le n\le 10^5\) 。