P11427 [清华集训 2024] 绝顶之战
题目描述
有一个长度为 $m$ 的一维空间,还有 $n$ 个物品,第 $i$ 个物品的长度为 $a_i$。现在按照编号从小到大的顺序依次将物品放入空间中,对于第 $i$ 个物品:
- 如果当前空间中存在一段连续的长度至少为 $a_i$ 的空余,则你**必须**将第 $i$ 个物品放入一段连续的长度为 $a_i$ 的空余空间中。
- 否则,第 $i$ 个物品无法被放入,跳过它。
你需要输出:按照编号从小到大的顺序考虑完所有物品后,所有可能的**空间占用长度**,它的定义是所有被放入空间的物品的长度之和。
输入格式
输入的第一行两个整数 $m,n$,分别表示空间长度和物品个数。
第二行 $n$ 个整数 $a_1,\cdots,a_n$,依次表示每个物品的长度。
输出格式
输出两行,第一行一个整数 $S$,表示可能的空间占用长度的数量。
第二行 $S$ 个整数 $b_1,\ldots,b_S$,**从小到大**输出所有可能的空间占用长度。
注意,你需要保证 $b_1,\ldots,b_S$ 不重不漏。
说明/提示
### 【样例 1 解释】
下图分别展示了空间占用长度为 $4,6,7,8$ 的一种可能方式:

### 数据范围
对于所有测试数据,$1\leq m,a_i\leq 10^{16}$,$\ 1\leq n\leq 14$。
| 子任务编号 | $n=$ | $m,a_i\le$ | 分数 |
| :-----------: | :-----------: | :-----------: | :-----------: |
| $1$ | $5$ | $10$ | $15$ |
| $2$ | $2$ | $10^{16}$ | $5$ |
| $3$ | $3$ | $10^{16}$ | $5$ |
| $4$ | $5$ | $10^{16}$ | $5$ |
| $5$ | $7$ | $10^{16}$ | $5$|
| $6$ | $9$ | $10^{16}$ | $5$ |
| $7$ | $11$ | $10^{16}$ | $10$ |
| $8$ | $12$ | $10^{16}$ | $10$ |
| $9$ | $13$ | $10^{16}$ | $10$ |
| $10$ | $14$ | $10^{16}$ | $30$ |