#P13659. [CERC 2020] Storage Problems

[CERC 2020] Storage Problems

Description

黑帮分子成功抢劫了城市中最著名的拍卖行。现在他们安全地藏身在他们的据点,并将偷来的物品存放在那里。幸运的是,你设法在他们的据点里安放了窃听器。你还拥有每个黑帮分子的个人档案,其中包含他们的声音录音。你将仔细监听接下来发生的事情,希望这能帮助你调查这起抢劫案。

每个黑帮分子恰好偷了一个物品,第 ii 个黑帮分子偷了第 ii 个物品。现在每个黑帮分子都试图把自己的物品放入公共储藏室,储藏室最多能承受总重量 KK。储藏室是一个小房间,黑帮分子们依次存放他们的物品。

当某个黑帮分子试图将物品放入储藏室,但发现放不下时(即储藏室内物品的总重量加上他的新物品会超过 KK),他会生气并把储藏室里的所有物品都扔出去。在此过程中,他会告诉其他人:“jj items are going to trash!”(jj 个物品要被扔掉了!),其中 jj 是他试图存放物品时储藏室中的物品数量。此时会发生争吵,之后不会再有物品被存放。

由于你在黑帮分子的储藏室里安放了窃听器,你会听到黑帮分子扔出多少物品。此外,利用你的个人档案,你可以分辨出每个黑帮分子的声音。

因此,如果你能提前知道,对于所有可能的 jjii,在第 ii 个黑帮分子扔出所有 jj 个物品时,储藏室中可能存在多少种不同的物品子集,这将极大地帮助你的调查。由于子集的数量可能很大,请将结果对 167772161167772161 取模后输出。

Input Format

输入包含两行。

第一行包含两个整数 NNKK2N4002 \leq N \leq 4001K4001 \leq K \leq 400),分别表示黑帮分子的数量和储藏室能承受的最大总重量。

第二行包含 NN 个整数 w1,w2,,wNw_1, w_2, \cdots, w_N,其中 1wiK1 \leq w_i \leq K,表示第 ii 个黑帮分子偷的物品的重量。

Output Format

输出共 NN 行,每行恰好包含 N1N-1 个整数。第 ii 行的第 jj 个值表示:恰好包含 jj 个物品的子集,这些物品的总重量不超过 KK,但无法再加入第 ii 个黑帮分子的物品(即加上 wiw_i 后会超过 KK)的子集数量。每个数对 167772161167772161 取模。

3 3
2 2 1
1 1
1 1
0 0
5 5
1 2 3 4 5
1 1 0 0
2 2 0 0
2 2 0 0
3 3 0 0
4 4 0 0

Hint

由 ChatGPT 4.1 翻译