loj#P3296. 「BalticOI 2012 Day2」旋律

「BalticOI 2012 Day2」旋律

题目描述

译自 BalticOI 2012 Day2 T2. Melody

Linas 喜欢弹奏一种乐器,然而没人知道这种乐器的名字。这个乐器有 SS 个孔,Linas 可以以十种不同的方式(从 0099 编号)之一盖住每个孔,从而弹奏出不同的音符。这种乐器可以弹奏出 NN 种音符,每个音符对应一种盖住孔的方式。如果一种盖住孔的方式不与任何音符对应,乐器会发出非常糟糕的声音,因此 Linas 从来不会尝试不与已有音符对应的盖住孔的方式。

现在 Linas 所在的乐队要演奏一首乐曲。Linas 已经将这个乐曲对应的音符写了出来。不幸地是,Linas 的表现并不理想。他能弹出两个连续的音符,当且仅当这两个音符有不超过 GG 个孔的覆盖方式不同。现在 Linas 希望自己演奏的错误音符的数量尽可能少。

输入格式

第一行三个整数 N,S,GN,S,G

接下来 NN 行,每行一个长度 SS 的字符串(只包括数字),第 ii 行的第 jj 个字符表示弹奏第 ii 个音符时,第 jj 个孔的覆盖方式。保证任意两个音符的弹奏方式不同。

下一行一个整数 LL,代表乐曲包含的音符数。

最后一行包含 LL 个整数,代表乐曲对应的音符编号。

输出格式

输出第一行一个整数,代表 Linas 演奏的错误音符的最小值。

下一行 LL 个整数,代表在错误音符的数目最小的前提下,Linas 实际弹奏的音符。如果有多种满足条件的弹奏方式,任意输出一种即可。

5 4 2
1111
2101
2000
0100
0000
7
1 5 4 5 3 2 1
1
1 2 4 5 3 2 1

数据范围与提示

  • 对于 40%40\% 的数据,L100L \leq 100
  • 对于 65%65\% 的数据,L5000L \leq 5000
  • 对于 100%100\% 的数据,1N1001 \leq N \leq 1000G<S1000 \leq G \lt S \leq 1001L1051 \leq L \leq 10^5