题目背景
[此处应有GenShin Impact.jpg]
顺便一提瓦特改良了蒸汽机
题目描述
鸽子很喜欢提瓦特,所以他在家门口放了 $n$ 台蒸汽机,围成一个环,依次编号为 $0\sim n-1$,与第 $i$ 台蒸汽机相邻的两台蒸汽机的编号分别为 $(i-1)\mod n$ 和 $(i+1)\mod n$。初始时,有些蒸汽机是开启状态,而另一些是关闭状态。鸽子刚刚学习了魔法,他想用魔法把所有蒸汽机都启动。具体来说,鸽子的魔法是这样的:
选择一个关着的蒸汽机,设其编号为 $i$
启动编号为 $i$ 的蒸汽机
由于鸽子还不能完全控制魔法,鸽子溢出的魔力会更改第 $(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.ans
或 chk 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\%$ 的数据,保证初始时所有蒸汽机都是关闭状态