UOJ Logo Universal Online Judge

UOJ

#932. 【清华集训2024】绝顶之战

附件下载 统计

有一个长度为 m 的一维空间,还有 n 个物品,第 i 个物品的长度为 ai。现在按照编号从小到大的顺序依次将物品放入空间中,对于第 i 个物品:

  • 如果当前空间中存在一段连续的长度至少为 ai 的空余,则你必须将第 i 个物品放入一段连续的长度为 ai 的空余空间中。
  • 否则,第 i 个物品无法被放入,跳过它。

你需要输出:按照编号从小到大的顺序考虑完所有物品后,所有可能的空间占用长度,它的定义是所有被放入空间的物品的长度之和。

输入格式

输入的第一行两个整数 m,n,分别表示空间长度和物品个数。

第二行 n 个整数 a1,,an,依次表示每个物品的长度。

输出格式

输出两行,第一行一个整数 S,表示可能的空间占用长度的数量。

第二行 S 个整数 b1,,bS从小到大输出所有可能的空间占用长度。

注意,你需要保证 b1,,bS 不重不漏。

样例 #1

样例输入 #1

8 4
3 4 1 2

样例输出 #1

4
4 6 7 8

【样例 1 解释】

下图分别展示了空间占用长度为 4,6,7,8 的一种可能方式:

样例 #2

样例输入 #2

见题目目录下的 2.in 与 2.ans。

样例输出 #2

见题目目录下的 2.in 与 2.ans。

数据范围

对于所有测试数据,1m,ai1016 1n14

子任务编号 n= m,ai 分数
1 5 10 15
2 2 1016 5
3 3 1016 5
4 5 1016 5
5 7 1016 5
6 9 1016 5
7 11 1016 10
8 12 1016 10
9 13 1016 10
10 14 1016 30

时间限制:1s

空间限制:512MB