시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 15 | 11 | 11 | 84.615% |
大きさが異なる n 個のコップと 3 つのトレイ(お盆)A,B,C があり, それらのコップは 3 つのトレイの上にそれぞれ何個かずつ一山に重ねて置かれている. ただし, どのトレイにおいても, そのトレイの中で一番小さいコップが一番下に, 2 番目に小さいコップがその上に, 3 番目に小さいコップがその上にと, 小さい順に伏せて重ねてある. 例えば, 下図の右側は, n = 5 個のコップがトレイ A,B,C にそれぞれ 2 個,0 個,3 個重ねて置かれている状態を示している.
このように, コップの初期状態が与えられたとき, 次の規則 1 ~ 3 を守りながら, すべてのコップを A または C のどちらかのトレイに移動させるには何回移動を行えばよいかを求めたい.
n 個のコップの初期状態と整数 m が与えられたとき, m 回以内の移動で, A または C のどちらかのトレイにすべてのコップをまとめて重ねることができるかどうかを判定し, 可能な場合には移動回数の最小値を, 不可能な場合には -1 を出力するプログラムを作成しなさい.
入力ファイルの 1 行目には, n と m がこの順に空白を区切り文字として書いてある. 1 ≦ n ≦ 15 であり, 1 ≦ m ≦ 15000000 である. 2 行目,3 行目,4 行目には, 1 から n までの整数を何個かずつ 3 つのグループに分けて, それぞれのグループ内で小さい順(昇順)に並べたものが書いてある. ただし, 各行の先頭(それらの整数の前)には, それらの個数が書いてある. 2 行目に書かれている整数(先頭の 1 つを除く) はトレイ A の上に重ねられている各コップの大きさを表す. 同様に, 3 行目に書かれている整数(先頭の 1 つを除く) はトレイ B の上に重ねられている各コップの大きさを表し, 4 行目に書かれている整数(先頭の1つを除く)はトレイ C の上に重ねられている各コップの大きさを表す.
アップロードする出力ファイルにおいては, 出力(移動回数または -1)の後に改行を入れること.
3 10 0 1 1 2 2 3
9
4 20 2 1 2 1 3 1 4
3
2 5 2 1 2 0 0
0
3 3 0 1 1 2 2 3
-1