CF1547C.Pair Programming

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Pair Programming

题目描述

Monocarp 和 Polycarp 正在学习新的编程技巧。现在他们决定尝试“结对编程”。

已知他们在同一个文件上共同工作了 n+mn + m 分钟。每分钟恰好有一个人对文件进行了修改。在他们开始之前,文件中已经写好了 kk 行。

每分钟恰好有一个人执行以下两种操作之一:在文件末尾添加一行新内容,或者修改文件中的某一行。

Monocarp 总共工作了 nn 分钟,执行的操作序列为 [a1,a2,,an][a_1, a_2, \dots, a_n]。如果 ai=0a_i = 0,他就在文件末尾添加一行新内容。如果 ai>0a_i > 0,他就修改第 aia_i 行。Monocarp 必须严格按照 a1,a2,,ana_1, a_2, \dots, a_n 的顺序执行操作。

Polycarp 总共工作了 mm 分钟,执行的操作序列为 [b1,b2,,bm][b_1, b_2, \dots, b_m]。如果 bj=0b_j = 0,他就在文件末尾添加一行新内容。如果 bj>0b_j > 0,他就修改第 bjb_j 行。Polycarp 必须严格按照 b1,b2,,bmb_1, b_2, \dots, b_m 的顺序执行操作。

请还原他们共同的操作序列,长度为 n+mn + m,使得所有操作都是合法的——即不能修改尚未存在的行。注意,在最终的操作序列中,Monocarp 的操作应当形成子序列 [a1,a2,,an][a_1, a_2, \dots, a_n],Polycarp 的操作应当形成子序列 [b1,b2,,bm][b_1, b_2, \dots, b_m]。他们可以任意多次轮流操作。

举个例子,假设 k=3k = 3。Monocarp 首先修改了第 22 行,然后添加了一行新内容(因此 n=2,a=[2,0]n = 2, a = [2, 0])。Polycarp 首先添加了一行新内容,然后修改了第 55 行(因此 m=2,b=[0,5]m = 2, b = [0, 5])。

由于文件初始有 33 行,为了让 Polycarp 能够修改第 55 行,必须先添加两行新内容。在这种情况下,合法的操作序列可以是 [0,2,0,5][0, 2, 0, 5][2,0,0,5][2, 0, 0, 5]。而 [0,0,5,2][0, 0, 5, 2](操作顺序错误)和 [0,5,2,0][0, 5, 2, 0](第 55 行尚不存在)都是不合法的。

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000)。接下来是 tt 组测试数据。每组测试数据前有一个空行。

每组测试数据包含三行。第一行包含三个整数 kknnmm0k1000 \le k \le 1001n,m1001 \le n, m \le 100),分别表示文件初始的行数、Monocarp 操作序列的长度和 Polycarp 操作序列的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai3000 \le a_i \le 300)。

第三行包含 mm 个整数 b1,b2,,bmb_1, b_2, \dots, b_m0bj3000 \le b_j \le 300)。

输出格式

对于每组测试数据,输出任意一个合法的 Monocarp 和 Polycarp 的共同操作序列,长度为 n+mn + m。如果不存在这样的序列,输出 1-1

说明/提示

由 ChatGPT 4.1 翻译

样例

5

3 2 2
2 0
0 5

4 3 2
2 0 5
0 6

0 2 2
1 0
2 3

5 4 4
6 0 8 0
0 7 0 9

5 4 1
8 7 8 0
0
2 0 0 5 
0 2 0 6 5 
-1
0 6 0 7 0 8 0 9
-1

在线编程 IDE

建议全屏模式获得最佳体验