#P1752. The Values You Can Make

The Values You Can Make

题目描述

Pari 想向 Arya 买一块昂贵的巧克力。她有 nn 个硬币,第 ii 个硬币的价值是 cic_i。巧克力的价格是 kk,所以 Pari 需要把总价值为 kk 的硬币给 Arya。

现在 Pari 想要知道他所选择的这些总价值为 kk 的硬币,可以组合成多少个不同的面值 xx

输入格式

第一行包含两个整数 nnkk1n1\le nk500k\le 500),分别为硬币数量和巧克力价格。

第二行包含 nn 个整数 c1c_1c2c_2......cnc_n1ci5001\le c_i\le 500),表示每个硬币的价值。

保证存在某些硬币的总价值为 kk

输出格式

输出的第一行包含一个整数 qq,表示 xx 的个数。然后按升序输出整数 xx,相邻两数用空格隔开。

6 18
5 6 1 10 12 2
16
0 1 2 3 5 6 7 8 10 11 12 13 15 16 17 18

面值为 1818 的硬币组合有 [5,1,10,2][5, 1, 10, 2][5,1,12][5, 1, 12][6,10,2][6, 10, 2][6,12][6, 12]。它们可以组成的面值 xx 分别如下:

  • [5,1,10,2][5, 1, 10, 2]:$0, 1, 2, 5, 10, 3, 6, 11, 7, 12, 15, 8, 13, 16, 17, 18$;
  • [5,1,12][5, 1, 12]0,1,5,12,6,13,17,180, 1, 5, 12, 6, 13, 17, 18
  • [6,10,2][6, 10, 2]0,2,6,10,8,12,16,180, 2, 6, 10, 8, 12, 16, 18
  • [6,12][6, 12]0,6,12,180, 6, 12, 18
3 50
25 25 50
3
0 25 50