TopCoder

User's AC Ratio

NaN% (0/0)

Submission's AC Ratio

NaN% (0/0)

Tags

Description

有一種新的樂器,它總共有 S 個音孔,而且每一個音孔都恰好有十種不同的調整方式,不妨標記為 '0', '1', ..., '9'。吹奏出某一個音符的方法,就是透過變換所有音孔的調整方式,使得該樂器能夠吹奏出特定的音符。總共有 N 種音符。


除了這 N 種音符的音孔調整組合以外,其他音孔的調整方式都會導致樂器發出非常可怕的聲音,因此我們應極力避免調整出其它的組合。


現在我們想要吹奏出一首很困難的歌曲,它依序包含了 L 個音符。因為手指在調整的時候沒辦法動作這麼快,吹奏出相鄰的兩個音之間僅能有至多 G 個音孔的調整方式不同。


為了避免發出噪音,而手指的速度又沒辦法跟上的時候,有時候我們必須被迫彈奏出其他音符,這時候被稱為一次「誤彈」。


請問在最佳情形下,至少得「誤彈」幾次,才能夠將整首歌曲吹奏完畢呢?請你也順便找出一組吹奏的方式吧。
Warn: 本題有 specialjudge

Input Format

一個輸入檔可能包含多筆測試資料,以EOF結束。


對於每一筆測試資料,第一行有三個整數 N(1<=N<=100), S, G (0<=G<S<=100)。接下來的 N 行依序有一個長度為 S 的數字字串,用以表示每一種音符的吹奏方式。


接下來有一個正整數 L,然後有 L 個介於 1 到 N 之間(包含)的正整數,依序表示這首曲子的旋律。


至少有 40% 的測試資料滿足 L<=100。

至少有 65% 的測試資料滿足 L<=5000。

對於所有測試資料都有 L<=105

Output Format

輸出請包含兩行,第一行有一個非負整數表示至少得誤彈的次數。第二行請輸出恰好 L 個音符編號,滿足吹奏的條件。

Sample Input 1

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

Sample Output 1

1
1 2 4 5 3 2 1
1
1 2 4 5 3 2 1

Hints

Problem Source

Migrated from old NTUJ.

BOI2012 Day2

Subtasks

No. Testdata Range Score

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 30000 65536 204800