#L5335. 「清华集训 2024」绝顶之战

    ID: 4793 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划线性代数位运算状态压缩子集枚举

「清华集训 2024」绝顶之战

题目描述

给定长度为 mm 的一维空间和 nn 个物品(第 ii 个物品长度为 aia_i),按编号顺序放置物品:

  1. 若当前空间存在至少 aia_i 长度的连续空余,必须将物品放入某段连续空余中;
  2. 若不存在,则跳过该物品。 需输出所有可能的“空间占用长度”(被放入物品的长度之和),要求不重不漏且从小到大排列。

输入格式

  1. 第一行:两个整数 mmnn(空间长度、物品个数);
  2. 第二行:nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n(物品长度,1m,ai10161 \leq m, a_i \leq 10^{16}1n141 \leq n \leq 14)。

输出格式

  1. 第一行:整数 SS(可能的占用长度数量);
  2. 第二行:SS 个整数,从小到大输出所有可能的占用长度。

样例 1

输入

8 4
3 4 1 2

输出

4
4 6 7 8