#abc275f. [abc275_f]Erase Subarrays

[abc275_f]Erase Subarrays

题目描述

给定一个整数数组 A=(a1,a2,,aN)A=(a_1,a_2,\ldots,a_N)
你可以执行以下操作任意次数(可能为零):

  • 选择 AA 的一个非空连续子数组,并将其从数组中删除。

对于每个 x=1,2,,Mx=1,2,\ldots,M,解决以下问题:

  • 找到使 AA 元素之和等于 xx 的最小操作次数。如果无法使 AA 元素之和等于 xx,则输出 -1

注意,空数组的元素之和为 00

约束条件

  • 1N,M30001 \leq N,M \leq 3000
  • 1ai30001 \leq a_i \leq 3000
  • 输入中的所有值都是整数。

输入

输入从标准输入给出,格式如下:

NN MM
a1a_1 \ldots aNa_N

输出

输出 MM 行,第 ii 行应包含 x=ix=i 对应的答案。


示例输入 1

4 5
1 2 3 4

示例输出 1

1
2
1
1
1

以下是实现目标所需的最小操作次数的示例。

  • 对于 x=1x=1,删除 a2,a3,a4a_2,a_3,a_4AA 的元素之和变为 xx
  • 对于 x=2x=2,删除 a3,a4a_3,a_4,然后删除 a1a_1AA 的元素之和变为 xx
  • 对于 x=3x=3,删除 a3,a4a_3,a_4AA 的元素之和变为 xx
  • 对于 x=4x=4,删除 a1,a2,a3a_1,a_2,a_3AA 的元素之和变为 xx
  • 对于 x=5x=5,删除 a2,a3a_2,a_3AA 的元素之和变为 xx

示例输入 2

1 5
3

示例输出 2

-1
-1
0
-1
-1

示例输入 3

12 20
2 5 6 5 2 1 7 9 7 2 5 5

示例输出 3

2
1
2
2
1
2
1
2
2
1
2
1
1
1
2
2
1
1
1
1