#XMOJ11813. 捉迷藏搜查

捉迷藏搜查

说明

时间限制:1 Sec 内存限制:256 MB 输入文件:hyspy.in 输出文件:hyspy.out

小明和同学们在一条由 $n$ 个连续格子组成的场地上玩捉迷藏。$a$ 个同学每人躲进一个"藏身帐篷",每个帐篷恰好占连续的 $b$ 个格子,帐篷之间可以紧挨着但不能重叠。如果一个帐篷里躲着一个同学,只要小明搜查的格子属于这个帐篷,这个同学就会被找到。

小明之前已经搜查过 $k$ 个格子,但都没找到人(说明这些格子一定是空的)。现在他想再挑选若干个格子搜查,使得无论同学们怎么躲,都至少有一个人被找到。

请你计算:为了达到这个目标,他最少需要再搜查多少个格子?并输出这些格子的位置(任意一种合法方案即可)。

输入格式

第一行四个正整数 $n, a, b, k$($1 \le n \le 200000$,$1 \le a, b \le n$,$0 \le k \le n-1$),分别表示格子总数、同学的数量、每个帐篷的长度、已经搜查过的格子数。

第二行一个长度为 $n$ 的字符串,由 0 和 1 组成。第 $i$ 个字符为 1 表示小明已经搜查过第 $i$ 个格子(必为空),为 0 表示尚未搜查。保证字符串中恰好有 $k$ 个 1。保证至少存在一种合法的帐篷摆放方案。

输出格式

第一行输出一个整数 $m$,表示最少需要再搜查的格子数。

第二行输出 $m$ 个整数,表示这些格子的位置(从左到右编号为 $1$ 到 $n$)。每个格子只输出一次,顺序任意。若有多种方案,输出任意一种即可。

样例

样例 1

5 1 2 1
00100

2
2 5

样例说明:

只有一个同学,帐篷长 22 格,且它不能放在第 33 格(已被搜过、必为空)。因此帐篷要么在第 1∼21\sim2 格,要么在第 4∼54\sim5 格。小明在第 22 格和第 55 格各搜一次,无论同学躲在哪边都必被找到。

数据范围

$1 \le n \le 200000$,$1 \le a, b \le n$,$0 \le k \le n-1$。