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$ 的一种可能方式: ![](https://cdn.luogu.com.cn/upload/image_hosting/jbfoe06m.png) ### 数据范围 对于所有测试数据,$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$ |