第6回日本情報オリンピック 予選

2006年12月22日
情報オリンピック日本委員会

問題
   カードの並び替え

解説

2n 枚のカードが,上からどのような順番で並んでいるかを配列に保存し, その配列を更新し続ければ良い.

ここでは, 「カードの並びの保存の仕方」 「k でカットの実行の仕方」 「リフルシャッフルの実行の仕方」 について解説を行う.

プログラム全体の処理の流れは,

  1. 入力ファイルから値 n を読み込む.
  2. サイズ 2n の配列を 2つ宣言する.
  3. 「操作を行う前のカードの並びを保存している配列」が,1, 2, 3, ... , 2n の順番に値を持つように初期化する.
  4. 入力ファイルから操作の回数 m を読み込む.
  5. 次を m 回繰り返す.
    1. 入力ファイルからカードを並べ替える方法を読み込む.
    2. 読み込んだ値に従って,リフルシャッフルもしくはカットを行う.
  6. 答えとして「操作を行う前のカードの並びを保存している配列」を出力する.

となる.