P3551 [POI 2013] USU-Take-out
题目描述
小埃德娜收到了一份礼物——游戏 Take-out。
Take-out 是一个单人游戏,在一块由 $n$ 个相邻方块组成的序列上进行,方块编号从 $1$ 到 $n$。每个方块要么是白色,要么是黑色,并且白色方块的数量是黑色方块数量的 $k$ 倍。游戏目标是通过合法的移动移除所有方块。
在一步移动中,你恰好移除 $k$ 个白色方块和 $1$ 个黑色方块,其他方块的位置保持不变。一步移动是合法的,当且仅当在这次移动中被移除的任意两个方块之间没有“空隙”(即之前已被移除方块的位置)。
请找出任意一组合法的移动顺序,使得所有方块都被移除。数据保证解一定存在。
输入格式
输入的第一行包含两个整数 $n$ 和 $k$($2 \le n \le 1\,000\,000$,$1 \le k \le n-1$),用一个空格隔开,分别表示游戏中方块的总数和每步移动中每个黑色方块对应的白色方块数量(即每步移除的白方块数)。所有测试数据都满足 $k+1 \mid n$。
第二行是一个长度为 $n$ 的字符串,由字母 `b` 或 `c` 组成,依次表示各个方块的颜色(波兰语):`b`(biały)表示白色,`c`(czarny)表示黑色。你可以假设所有测试数据中都存在一组合法的移动顺序可以移除所有方块。
输出格式
你的程序应该输出 $\frac{n}{k+1}$ 行到标准输出。
连续的行应该描述连续的移动。每行应该包含 $k+1$ 个整数,按递增顺序排列,用单个空格分隔,表示该步要移除的方块的编号。
说明/提示
- 返回 `TAT1`:同一位置输出了两次。
- 返回 `TAT2`:在输出的 $k+1$ 个位置中,白色方块数量不是黑色方块数量的 $k$ 倍。
- 返回 `TAT3`:位置不是递增顺序,或者该段经过了已经被移除的方块。
SPJ 由 @colazcy 提供。