問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
前回までの問題では、プレイヤーが 1 人ですごろくをしたときのシミュレーションを行いました。
次は複数人ですごろくをした履歴を基にシミュレーションを行います。
K 人で T ターンのゲームを行いました。
各ターンではプレイヤー 1 → プレイヤー 2 → ... プレイヤー K の順で行動します。
各ターンで各プレイヤーが 1~6 の数字がでるサイコロを振って出た目の履歴が与えられます。
履歴に基づいて行動したときの各プレイヤーのマスの位置と所持金を出力してください。
ただし、ゴールマスを超えるような移動の場合もゴールマス (マス N) にたどり着いたとします。
ゴールマスにたどり着いたら、それ以降のターンでは移動せず Finished と出力してください。
入力例 1 では、以下のようにゲームが進行します。
・プレイヤー 1 がサイコロの目 3 を出す。マス 1 からマス 4 に移動し、所持金は 9 になる。
・プレイヤー 2 がサイコロの目 1 を出す。マス 1 からマス 3 に移動し、所持金は 59 になる。
・プレイヤー 1 がサイコロの目 2 を出す。マス 4 からマス 5 (ゴールマス) に移動する。
・プレイヤー 2 がサイコロの目 1 を出す。マス 3 からマス 4 に移動し、所持金は 68 になる。
・プレイヤー 3 は既にゴールしているため、Finished と出力する。
・プレイヤー 2 がサイコロの目 1 を出す。マス 4 からマス 5 (ゴールマス) に移動する。
入力は以下のフォーマットで与えられます。
N T K
D_{1,1} D_{1,2} ... D_{1,T}
D_{2,1} D_{2,2} ... D_{2,T}
...
D_{K,1} D_{K,2} ... D_{K,T}
B_1 C_1
B_2 C_2
...
B_N C_N
期待する出力は T × K 行からなります。
各ターンの出力はプレイヤー 1 から順に、プレイヤーの番号とターン終了時のマス、所持金を空白区切りで出力します。
ただし、ターン開始時にゴールマスにいるプレイヤーは、プレイヤーの番号と Finished を出力してください。
これを 1, 2, ..., T ターンの順に出力してください。
すべてのテストケースにおいて、以下の条件をみたします。
・2 ≦ N ≦ 100
・1 ≦ T ≦ 100
・2 ≦ K ≦ 10
・1 ≦ D_{i,j} ≦ 6
・B_i = "P" (所持金イベントマス)、-100 ≦ C_i ≦ 100 (2 ≦ i ≦ N-1)
・B_1 = "S" (スタートマス), C_1 = 0
・B_N = "G" (ゴールマス), C_N = 0
5 3 2
3 4 2
2 1 1
S 0
P -8
P 59
P 9
G 0
1 4 9
2 3 59
1 5 9
2 4 68
1 Finished
2 5 68
10 5 3
1 5 2 6 4
6 4 6 6 4
4 6 3 2 5
S 0
P -93
P 98
P -39
P -89
P -59
P 99
P -93
P -99
G 0
1 2 -93
2 7 99
3 5 -89
1 7 6
2 10 99
3 10 -89
1 9 -93
2 Finished
3 Finished
1 10 -93
2 Finished
3 Finished
1 Finished
2 Finished
3 Finished
20 5 4
1 1 3 6 3
3 6 4 5 5
4 1 3 4 4
6 3 1 4 6
S 0
P 32
P -94
P -93
P -64
P -60
P 1
P -83
P -31
P -36
P -75
P -1
P 95
P 9
P -100
P 35
P 17
P -50
P 1
G 0
1 2 32
2 4 -93
3 5 -64
4 7 1
1 3 -62
2 10 -129
3 6 -124
4 10 -35
1 6 -122
2 14 -120
3 9 -155
4 11 -110
1 12 -123
2 19 -119
3 13 -60
4 15 -210
1 15 -223
2 20 -119
3 17 -43
4 20 -210