atcoder#ABC275F. [ABC275F] Erase Subarrays

[ABC275F] Erase Subarrays

配点 : 500500

問題文

正整数列 A=(a1,a2,,aN)A=(a_1,a_2,\ldots,a_N) が与えられます。 あなたは次の操作を 00 回以上何度でも繰り返せます。

  • AA から(空でない)連続する部分列を選び、削除する。

x=1,2,,Mx=1,2,\ldots,M に対し、次の問題を解いてください。

  • AA の要素の総和をちょうど xx にするために必要な操作回数の最小値を求めてください。ただし、どのように操作を行っても AA の要素の総和をちょうど xx にできない場合は代わりに -1 と出力してください。

なお、AA が空である時、AA の要素の総和は 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 に対する答えを出力せよ。

4 5
1 2 3 4
1
2
1
1
1

操作回数が最小である操作の例を以下に示します。

  • x=1x=1 について、a2,a3,a4a_2,a_3,a_4 に対して操作をすることで AA の要素の総和が xx になります。
  • x=2x=2 について、a3,a4a_3,a_4 に対して操作をした後、a1a_1 に対して操作をすることで AA の要素の総和が xx になります。
  • x=3x=3 について、a3,a4a_3,a_4 に対して操作をすることで AA の要素の総和が xx になります。
  • x=4x=4 について、a1,a2,a3a_1,a_2,a_3 に対して操作をすることで AA の要素の総和が xx になります。
  • x=5x=5 について、a2,a3a_2,a_3 に対して操作をすることで AA の要素の総和が xx になります。
1 5
3
-1
-1
0
-1
-1
12 20
2 5 6 5 2 1 7 9 7 2 5 5
2
1
2
2
1
2
1
2
2
1
2
1
1
1
2
2
1
1
1
1