A - ハイパー覆面すごろく Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

問題文

この問題はインタラクティブ形式です。

Xはすごろく遊びが大好きで、毎日ひとりですごろく遊びをしています。
ある日、Xは普通のすごろくはマスの内容があらかじめわかっているのがつまらないと感じ、新たなすごろくゲームで遊ぶことにしました。

  • このすごろくは1列に並んだ \(N + 1\) マスからなっています。
  • マスには順に \(0, 1, ..., N\) と番号が振られています。\(0\) 番目のマスがスタートで、\(N\) 番目のマスがゴールです。
  • サイコロを振ってその出目の値だけゴールに向かって進みます。
    ゴールを通り過ぎる場合は、通り過ぎたぶんスタート方向へ折り返します。(具体的には入出力例をご覧ください)
  • ゴールにぴったり到達したら、またスタートからゴールを目指すのを繰り返します。
  • \(i\) 番目のマスには整数 \(V_i\) が書かれていて、マスに止まるとそこに書かれている整数がスコアとして加算されます。
  • 一度ゴールに到達して再スタートしたあとも \(V_i\) の値は変わりませんが、\(i\) 番目のマスにはじめて止まるまでは \(V_i\) の値はわかりません。
  • ゲーム開始時、Xはスタートにいて、初期スコアは \(0\) です。

Xはサイコロを \(M\) 回振って遊ぶことにしましたが、ゲームをより面白くするためにサイコロにも一工夫を加えることにしました。

  • Xが使うサイコロは、偏りのない6面サイコロで、各面の値は\(1, 2, 3, 4, 5, 6\)となっています。
  • Xは毎回サイコロを振る前に、サイコロのどれかひとつの面を \(1 \sim 6\) の好きな整数に変えることができます。サイコロの目の変化はそれ以降も継続します。

どうサイコロの目を設定したらよいかわからないXのかわりに、
Xが得るスコアがなるべく大きくなるように、サイコロの目を設定しながらすごろく遊びをしてください。

各テストケースの得点およびこの問題の得点は、次のように計算されます。

  • 1つのテストケースでは、Xが得たスコアがそのまま得点になります。
  • テストケースは全部で 50 個あります。各テストケースの得点の合計が、この問題の得点になります。

入出力

最初に、以下の形式で標準入力から入力が与えられます。

\(N\) \(M\)
  • N はスタートを除いたすごろくのマス目の個数を表す整数で、N = 500 を満たします。
  • M はサイコロを振る回数を表す整数で、M = 5000 を満たします。
  • ジャッジプログラムの都合上、標準入力の内容を必ず読み込んでください。

以降、次のジャッジプログラムとのやり取りを M 回繰り返し行ってください。
M 回のやり取りが終了したら、プログラムを終了してください。

1. 標準出力に整数を6つ出力してください。

\(d_0\) \(d_1\) \(d_2\) \(d_3\) \(d_4\) \(d_5\)
  • \(d_0, ..., d_5\) は、次に振るサイコロの各面の値で、前回のサイコロの各面と比較して、たかだか1要素まで異なってよいです。
  • ゲーム開始時、 \((d_0, d_1, d_2, d_3, d_4, d_5) = (1, 2, 3, 4, 5, 6)\) です。
  • 前回のサイコロの各面の値と2要素以上異なる場合や、各面の値が \(1 \sim 6\) でない場合は Wrong Answer となります。
  • 出力の後には必ず改行し、flush してください。

2. 標準入力から整数が3つ与えられます。

\(d\) \(v\) \(x\)
  • d は、サイコロの出目を表します。
  • v は、サイコロによって到達したマスに書かれた値を表します。
  • x は、サイコロによって最終的に到達したマスの番号を表します。ゴールに到達した場合は \(N\) です。
  • ジャッジプログラムの都合上、標準入力の内容を必ず読み込んでください。

テストケースの生成について

V_N = 5000 です。
そのほかの V_i については、値が大きい領域と値が小さい領域ができるよう、初期値を\(0\)とし、次の処理を\(100\)回行って設定しています。

  1. \([1, 10]\) の整数を一様分布から選び、 \(l\) とする
  2. \([1, N-5-l]\) の整数を一様分布から選び、 \(p\) とする
  3. \([1, 200]\) の整数を一様分布から選び、 \(v\) とする
  4. \(V_p ... V_{p+l-1}\) に対して \(v\) を加える

とくに、 \(V_{0} = V_{N-5} = V_{N-4} = V_{N-3} = V_{N-2} = V_{N-1} = 0\) です。


入出力例

プログラムへの入力 プログラムの出力 説明 サイコロ マス スコア
20 6
スタートを除いたマスが20マスあり、サイコロを振れる回数が6であることを表します。
このサンプルは制約 \(N=500\) および \(M=5000\) を満たしていません。
1 2 3 4 5 6 0 0
1 2 3 4 6 6
サイコロの目を変更します。 1 2 3 4 6 6 0 0
6 263 6
サイコロの出目は \(6\) で、6番目のマスに到達し、そこに書かれている値は \(263\) です。 1 2 3 4 6 6 6 263
1 2 3 4 6 6
サイコロの目は変更しません。前回と同じです。 1 2 3 4 6 6 6 263
3 132 9
サイコロの出目は \(3\) で、9番目のマスに到達し、そこに書かれている値は \(132\) です。 1 2 3 4 6 6 9 395
1 2 3 6 6 6
サイコロの目を変更します。 1 2 3 6 6 6 9 395
6 0 15
サイコロの出目は \(6\) で、15番目のマスに到達し、そこに書かれている値は \(0\) です。 1 2 3 6 6 6 15 395
1 2 6 6 6 6
サイコロの目を変更します。 1 2 6 6 6 6 15 395
6 0 19
サイコロの出目は \(6\) で、ゴールで折り返して19番目のマスに到達し、そこに書かれている値は \(0\) です。
1 2 6 6 6 6 19 395
1 2 6 6 6 3
サイコロの目を変更します。 1 2 6 6 6 3 19 395
1 5000 20
サイコロの出目は \(1\) で、ゴールである20番目のマスに到達し、そこに書かれている値は \(5000\) です。 ゴールに到達したので、0番目のマスから再スタートとなります。 1 2 6 6 6 3 0 5395
1 2 6 3 6 3
サイコロの目を変更します。 1 2 6 3 6 3 0 5395
6 263 6
サイコロの出目は \(6\) で、6番目のマスに到達し、そこに書かれている値は \(263\) です。
この値は、1度目に到達した値と同じです(マスの値は変化したり消えたりしません)。
6回サイコロを振ったのでゲームは終了です。
1 2 6 3 6 3 6 5658

テスター

次のリンクから提供しています。

テスター