Wormly
Jonly 正在编写他的第一个电脑游戏。开场场景中,他希望主角 Wormly 穿过 Bridgely。
Wormly 是一条虫子,由 个大小相同的圆形气泡和 条腿组成。任意时刻,每条腿都必须位于某个气泡的正下方,并且每个气泡下方至多有一条腿。
Bridgely 原本由 块木板组成,每块木板的宽度等于 Wormly 气泡的直径,但其中一些木板已经缺失。
在每个时刻,Wormly 恰好可以进行以下两种操作之一:
- 将一条腿向前移动,跨过任意数量的木板,这些木板可以缺失。移动后,该腿必须落在一块未缺失的木板上,且仍位于 Wormly 的某个气泡正下方。腿不能超过其他腿。
- 将所有气泡整体向前移动一块木板,同时保持所有腿所在的木板不变。移动后,每条腿仍必须位于某个气泡的正下方。
初始时,Wormly 的气泡正好位于桥最左侧的 块木板上,腿位于桥最左侧的 块木板上。最终,Wormly 的气泡必须正好位于桥最右侧的 块木板上,腿必须位于桥最右侧的 块木板上。
保证桥最左侧和最右侧的 块木板均未缺失。求 Wormly 到达终点所需的最少操作次数。如果无法满足条件到达终点,则输出 IMPOSSIBLE。
输入格式
第一行包含一个正整数 ,表示测试数据组数,满足 。
接下来有 组测试数据。每组数据包含:
- 第一行包含三个整数 、 和 ,分别表示腿的数量、气泡的数量和桥的长度,满足 。
- 第二行包含一个长度为 的 字符串。第 个字符为
1表示第 块木板存在,为0表示第 块木板缺失。
输出格式
对于每组测试数据,输出一行。
如果 Wormly 可以到达终点,输出一个整数,表示所需的最少操作次数;否则输出 IMPOSSIBLE。
样例输入
3
1 2 2
11
2 3 5
11011
1 3 5
11011
样例输出
1
IMPOSSIBLE
5
样例解释
第 组测试数据的一种最优操作顺序为:移动腿、移动气泡、移动腿、移动气泡、移动腿,共需要 步。
数据范围
- ;
- ;
- 输入字符串的长度为 ,且仅由
0和1组成; - 桥最左侧和最右侧的 块木板均未缺失。
来源与许可
本题题面与测试数据整理自 BZOJ 2268。
样例 1
输入
3
1 2 2
11
2 3 5
11011
1 3 5
11011
输出
1
IMPOSSIBLE
5