[BalticOI 2012 Day2] 旋律
题目描述
有一种不为人知的乐器,这种乐器有 $S$ 个孔,可以通过十种不同的方式 $(0$ ~ $9)$ 覆盖这些孔来弹奏出 $N$ 个音符。你不能采取除了这 $N$ 个音符以外的孔的覆盖方式。
现在你要弹奏一首乐曲,但是由于这种乐器每两个音符之间不能有超过 $G$ 个孔的覆盖方式不同,所以你可能不得不弹错一些音符。你希望最小化你弹错音符的数目。
输入输出格式
输入格式
第一行三个整数 $N, S, G\ (0 \le G < S \le 100)$,含义如上文所述。
接下来 $N$ 行,每行一个长度为 $S$ 的字符串(只包含数字),表示弹奏这个音符时孔的覆盖方式。
接下来一行一个整数 $L$,表示乐曲中包含的音符的数目。
最后一行 $L$ 个整数,表示乐曲中音符的编号。
输出格式
第一行一个整数,表示你能取到的弹错音符数目的最小值。
接下来一行 $L$ 个整数,表示你的任意一种构造方案。
输入输出样例
输入样例 #1
5 4 2
1111
2101
2000
0100
0000
7
1 5 4 5 3 2 1
输出样例 #1
1
1 2 4 5 3 2 1
说明
**【样例解释】**
音符 $1$ 和音符 $5$ 在四个孔上的弹奏方式都不同,所以你不能在弹奏完音符 $1$ 后弹奏音符 $5$。
**【数据范围】**
- 对于 $40\%$ 的数据,$L \leq 100$;
- 对于 $65\%$ 的数据,$L \leq 5000$;
- 对于 $100\%$ 的数据,$1 \leq N \leq 100$,$1 \le L \le 10 ^ 5$。
**【说明】**
译自 [BalticOI 2012 Day2 T2. Melody](http://www.boi2012.lv/data/day2/eng/melody.pdf)。