#5648. 分糖果
分糖果
题目描述
小 D 是一个幼儿园老师,他需要将糖果分给孩子们。他会准备 个盘子,并在第 个盘子中放入 个糖果,要求盘子中的糖果数目互不相同。总共有 个小朋友,第 个小朋友需要 个糖果。小 D 希望无论哪个小朋友来找他要糖果,他都能选出若干个完整的盘子,使得这些盘子中的糖果数之和恰好等于需要的数量。
但是第 个小朋友很调皮,所以小 D 不希望给他吃糖果。因此他还希望,如果需要的糖果数目恰好为 ,不存在任何选盘子的方案,使得糖果总数为 。除此之外,所有 中的整数仍需满足之前的要求。
由于盘子数目有限,小 D 只能使用不超过 个盘子,请你帮他构造一种放糖果的方案,或告知他不存在这样的方案。
输入格式
本题有多组测试数据。
第一行一个整数 ,表示测试数据组数。
对于每组数据,输入两个整数 ,表示总人数和例外的编号。
输出格式
对于每组数据,如果无解,输出一行一个整数 。
否则先输出一行一个整数 ,表示使用的盘子数量。需要保证 。
然后输出一行 个互不相同的整数 ,表示每个盘子的糖果数量。需要保证 。
样例
样例 1 输入
3
6 4
7 3
11 11
样例 1 输出
3
1 2 5
-1
4
1 2 3 4
样例 1 解释
对于第一组数据:
- 若 , 是合法的。
- 若 , 是合法的。
- 若 , 是合法的。
- 若 ,不存在合法的集合。
- 若 , 是合法的。
- 若 , 是合法的。
附加样例
见下发文件,第 组下发样例符合第 个子任务的限制。
本题下发文件中还提供了参考 checker.cpp 和 testlib.h。本地测试时将 checker.cpp 与 testlib.h 放在同一目录中编译得到可执行文件 checker。将 checker 与下发的样例输入输出 candy.in/ans 以及你的输出 candy.out 放在同一目录下,使用命令 ./checker candy.in candy.out candy.ans 即可进行本地测试。
请注意,最终评测使用的 checker 与下发文件不相同,你的实现不应依赖 checker 的实现。
数据范围与约定
对于全部数据,。
| Subtask | 分值 | 特殊性质 | |
|---|---|---|---|
| 1 | 5 | 无 | |
| 2 | 10 | ||
| 3 | 15 | ||
| 4 | 10 | ||
| 5 | 35 | ||
| 6 | 25 | 无 |
相关
在下列比赛中:
京公网安备 11011102002149号