RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
JOI00242

Preliminary Task 4

Unrated 레이팅 미적용
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

4

大きさが異なる n 個のコップと 3 つのトレイ(お盆)A,B,C があり,
それらのコップは 3 つのトレイの上にそれぞれ何個かずつ一山に重ねて置かれている.
ただし,
どのトレイにおいても,
そのトレイの中で一番小さいコップが一番下に,
2 番目に小さいコップがその上に,
3 番目に小さいコップがその上にと,
小さい順に伏せて重ねてある.
例えば,
下図の右側は,
n = 5 個のコップがトレイ A,B,C
にそれぞれ 2 個,0 個,3 個重ねて置かれている状態を示している.

このように,
コップの初期状態が与えられたとき,
次の規則 1 〜 3 を守りながら,
すべてのコップを A または C
のどちらかのトレイに移動させるには何回移動を行えばよいかを求めたい.

(規則 1)
1 回に 1 つのコップだけを移動させることができる.
それは,
そのトレイにあるコップの中で一番上のコップ
(つまり,一番大きいコップ)である.

(規則 2)
大きいコップの上に小さいコップを重ねてはいけない.

(規則 3)
コップ 1 個の直接移動は,
トレイ A から B,B から A,B から C,C から B のみが許され,
A から C への直接移動や C から A への直接移動は許されない.

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)の後に改行を入れること.

入力例1
入力例2
入力例3
入力例4

3 10
4 20
2 5
3 3

0
2 1 2
2 1 2
0

1 1
1 3
0
1 1

2 2 3
1 4
0
2 2 3

出力例1
出力例2
出力例3
出力例4

9
3
0
-1

제약
입력 형식
출력 형식
문제 정보

생성자가 기록되지 않았습니다.

출처 JOI 2006 Preliminary

평가 및 의견

Preliminary Task 4

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Preliminary Task 4

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8