#26. 矿工的疑惑

    ID: 26 传统题 1000ms 512MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划记忆化搜索线性 DP算法基础递归 & 分治背包 DP

矿工的疑惑

题目背景

你是艾都古城里最有潜力的矿工啦,有着精湛的采矿技巧、大量野外生存的方法……

今日任务是:开采顾客指定的黄金硬币。

题目描述

顾客总共 kk 块黄金硬币,由于成本的原因,你不想开采超过 kk 块黄金硬币的原材料。

同时,你有一份开采矿洞的详细信息,每个矿洞允许开采的黄金硬币都已经标注出来了,现在想知道,有没有办法完成这一单交易。

注意,每个矿洞开采的数量必须完全开采,不可以取一部分,同时每个矿洞仅开采一次。

格式

输入

第一行两个整数 kknnnn 表示有多少个矿洞。

第二行有 nn 个整数,表示该矿洞至多可以打造出 gig_i 个黄金硬币。


  • 1k1031\leq k\leq 10^3
  • 1n311\leq n\leq 31
  • 1gi1001\leq g_i\leq 100
  • 数据确保可行方案最大不超过 5×1075\times 10^7 种。

输出

输出所有能够做到这个订单的可能,按照矿洞字典序升序输出它们。

如果不可能,输出一行 impossible

样例

10 5
1 2 3 4 5
1 2 3 4 
1 4 5
2 3 5
20 10
9 4 5 1 3 4 8 7 2 4
1 2 3 9
1 2 4 6 9
1 2 4 9 10
1 2 5 6
1 2 5 10
1 2 8
1 3 4 5 9
1 3 6 9
1 3 9 10
1 4 5 8
1 4 6 9 10
1 4 7 9
1 5 6 10
1 5 7
1 6 8
1 8 10
2 3 4 5 8
2 3 4 6 9 10
2 3 4 7 9
2 3 5 6 10
2 3 5 7
2 3 6 8
2 3 8 10
2 4 5 6 7
2 4 5 7 10
2 4 6 8 10
2 4 7 8
2 5 6 8 9
2 5 8 9 10
2 6 7 10
3 4 5 6 8
3 4 5 8 10
3 4 6 7 9
3 4 7 9 10
3 5 6 7
3 5 7 10
3 6 8 10
3 7 8
4 5 6 7 10
4 6 7 8
4 7 8 10
5 6 8 9 10
5 7 8 9
31 30
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
impossible

提示

  • 样例一解释:

    开采 1,4,51,4,5 矿洞刚刚好 1+4+5=101 + 4 + 5=10 块黄金硬币。

    或者开采 2,3,52,3,5 矿洞,也刚刚好 2+3+5=102+3+5=10 块黄金硬币。

  • 样例二解释:

    前两个输出答案可以自行检查,9+4+5+2=209+4+5+2=209+4+1+4+2=209+4+1+4+2=20