#D1003. 最少の删除

最少の删除

题目背景

nn 个数字,每次可以以 11 的代价删除一段,求剩余之和为 1m1\sim m 最少删除多少段?

题目描述

给你一个整数数组 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

输入格式

第一行输入两个整数 N,MN,M

第二行输入 NN 个整数 a1,a2,,aNa_1,a_2,\ldots,a_N

输出格式

输出 MM 行。 第 ii 行表示 x=ix=i 时的答案。

输入输出样例 #1

输入 #1

4 5
1 2 3 4

输出 #1

1
2
1
1
1

输入输出样例 #2

输入 #2

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

输出 #2

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

说明/提示

  • 1N,M30001 \leq N,M \leq 3000
  • 1ai30001 \leq a_i \leq 3000
  • 所有输入值均为整数。