Logo Universal Online Judge

UOJ

时间限制:2 s 空间限制:512 MB
Statistics

题目背景

[此处应有GenShin Impact.jpg]

顺便一提瓦特改良了蒸汽机

题目描述

鸽子很喜欢提瓦特,所以他在家门口放了 $n$ 台蒸汽机,围成一个环,依次编号为 $0\sim n-1$,与第 $i$ 台蒸汽机相邻的两台蒸汽机的编号分别为 $(i-1)\mod n$ 和 $(i+1)\mod n$。初始时,有些蒸汽机是开启状态,而另一些是关闭状态。鸽子刚刚学习了魔法,他想用魔法把所有蒸汽机都启动。具体来说,鸽子的魔法是这样的:

  1. 选择一个关着的蒸汽机,设其编号为 $i$

  2. 启动编号为 $i$ 的蒸汽机

  3. 由于鸽子还不能完全控制魔法,鸽子溢出的魔力会更改第 $(i-K)\mod n$ 台和第 $(i+K)\mod n$ 台蒸汽机的状态,即开变成关,关变成开。其中 $K$ 表示鸽子使用魔法时的不稳定度,是一个固定的值。

现在,给你 $n$ 台蒸汽机初始时的开关状态,请你求出一个操作序列,使得如果鸽子按照这个操作序列使用魔法,就能启动所有的蒸汽机。

输入格式

输入共两行。

第一行两个正整数 $n,K$,表示蒸汽机的数量和鸽子使用魔法时的不稳定度。

第二行一个长度为 $n$ 的字符串,第 $i$ 个字符为'1'表示第 $i-1$ 台蒸汽机初始是开启的,为'0'表示第 $i-1$ 台蒸汽机初始是关闭的。

输出格式

第一行输出一个 $m(1\le m\le 1400000)$,表示操作次数,如果无解则只输出一行 $-1$。

接下来 $m$ 行,每行一个整数 $x$,表示对第 $x$ 台蒸汽机使用魔法。你需要保证此时第 $x$ 台蒸汽机是关闭状态。

下发文件中包含了 chk.cpp,你可以通过 g++ chk.cpp -o chk -O2 -std=c++14 来编译得到可执行文件,并通过 ./chk teyvat.in teyvat.out teyvat.anschk teyvat.in teyvat.out teyvat.ans 来检验你的输出是否正确。teyvat.ans 中只需要包含一行一个整数,为 $-1$ 表示该组数据无解,否则有解。

样例一

input

5 2
01001

output

1
0

样例二

input

3 1
001

output

-1

大样例

限制与约定

对于 $100\%$ 的数据,保证 $3\le n\le 10^6,1\le K<\dfrac{n}{2}$

对于前 $10\%$ 的数据,保证 $n\le 10$

对于前 $30\%$ 的数据,保证 $n\le 1000$

对于前 $50\%$ 的数据,保证 $n\le 10^5$

对于另外 $20\%$ 的数据,保证初始时所有蒸汽机都是关闭状态