P3677 [CERC2016] 关键的膝盖 Key Knocking
题目描述
Goran 正在从他的膝盖手术中恢复,并正在试验用于存储的智能卡加密密钥。在这个问题中,一个密钥是指一个长度为 $3n$ 的二进制序列,其中n是正整数。序列的每一位从左往右依次被编号为 $1$ 到 $3n$。一个密钥的权值是指相邻位不同的位置个数再加上 $1$。比如:"000" 的权值是 $1$,"011010100" 的权值是 $7$。
他发现他可以发送小型脉冲电流来修改智能卡的电路,从而修改密钥。确切地说,他可以不断进行下面的操作:选择任意两个相邻的位,然后同时取反它们。比如他可以通过一次操作把 "000" 修改为 "110"。
给定一个长度为 $3n$ 的密钥,请操作不超过 $n$ 次,将其修改为一个权值不少于 $2n$ 的密钥。你可以认为合法解必然存在。
输入格式
包含一行一个 01 序列,表示初始密钥,保证长度一定为 $3n$,且 $1\le n\le 100000$。
输出格式
第一行包含一个整数 $m$,表示操作的次数,你需要保证 $0\le m\le n$ 。
第二行包含 $m$ 个正整数$a_1,a_2,...,a_m(1\le a_i