#joi2006yod. [joi2006yo_d]JOI 2006 予選 問題4
[joi2006yo_d]JOI 2006 予選 問題4
问题
有 个不同大小的杯子和 个托盘 A、B、C。这些杯子被分别堆叠在三个托盘上,每个托盘上都有一些杯子。然而,在任何一个托盘上,最小的杯子在底部,第二小的杯子在其上面,第三小的杯子在其上面,依此类推,以小到大的顺序叠放着。例如,下图的右边显示了 个杯子在托盘 A、B、C 上分别叠放 、、 个的状态。
给定杯子的初始状态,我们想要按照以下规则 ~ ,将所有杯子移动到托盘 A 或 C 中的一个,问至少需要移动几次。
(规则 )每次只能移动一个杯子。该杯子是托盘上的最顶层杯子(也就是最大的杯子)。
(规则 )不能将较大的杯子叠放在较小的杯子上。
(规则 )只允许直接将一个杯子从托盘 A 移动到 B、从 B 移动到 A、从 B 移动到 C、从 C 移动到 B。不能直接将一个杯子从 A 移动到 C 或从 C 移动到 A。
给定个杯子的初始状态和整数,判断在次移动以内,是否可以将所有杯子堆叠在托盘 A 或 C 中,并输出移动的最小次数。如果不可行,则输出 。
输入的第一行包含以空格分隔的和,满足,。第二行、第三行和第四行将个整数以升序方式分成三组,并写明每组中的元素个数。其中,第二行的整数(除去首个整数)表示堆叠在托盘 A 上的杯子的大小,类似地,第三行的整数表示堆叠在托盘 B 上的杯子的大小,第四行的整数表示堆叠在托盘 C 上的杯子的大小。
在输出中,在输出移动次数或 后加上换行符。
输入示例 1
3 10
0
1 1
2 2 3
输出示例 1
9
输入示例 2
4 20
2 1 2
1 3
1 4
输出示例 2
3
输入示例 3
2 5
2 1 2
0
0
输出示例 3
0
输入示例 4
3 3
0
1 1
2 2 3
输出示例 4
-1