#201. 覆盖条
覆盖条
题目描述
在一行中有 个单元格,从左到右编号为 1 到 。其中有 个红色单元格, 个黑色单元格,其余的 个单元格为白色。
需要使用一些覆盖条来覆盖所有红色单元格。每个覆盖条可以覆盖 个连续的单元格。找到一种方法来覆盖所有红色单元格,并满足以下所有约束:
- 每个红色单元格都被覆盖条覆盖。
- 不覆盖任何黑色单元格。
- 每个单元格最多只能被一个覆盖条覆盖。
- 使用的覆盖条数量尽可能少。
输入格式
输入包含多个测试用例。第一行包含一个整数 ,表示测试用例的数量。对于每个测试用例:
- 第一行包含四个整数 、、 和 :
- 表示红色单元格的数量;
- 表示黑色单元格的数量;
- 表示每个覆盖条的长度;
- 表示单元格的总数量。
- 数据范围:
- 第二行包含 个整数 ,表示红色单元格的编号。
- 数据范围:
- 第三行包含 个整数 ,表示黑色单元格的编号。
- 数据范围:
保证以下条件:
- 所有给定的 个单元格各不相同。
- 所有测试用例中 和 的总和不超过 。
输出格式
对于每个测试用例:
- 如果可以在满足所有约束的情况下覆盖所有红色单元格,首先输出一行包含一个整数 ,表示使用的最小覆盖条数量。接下来输出一行包含 个整数 ,其中 表示第 个覆盖条的最左单元格编号。
- 数据范围:
- 如果有多个答案,可以输出任意一个。
- 如果无法满足条件,则输出一行 。
样例
4
5 2 3 16
7 11 2 9 14
13 5
3 2 4 11
6 10 2
1 11
2 1 2 6
1 5
3
2 1 2 6
1 5
2
4
6 2 14 9
-1
2
1 4
-1