AT_abc275_f [ABC275F] Erase Subarrays
Description
[problemUrl]: https://atcoder.jp/contests/abc275/tasks/abc275_f
正整数列 $ A=(a_1,a_2,\ldots,a_N) $ が与えられます。
あなたは次の操作を $ 0 $ 回以上何度でも繰り返せます。
- $ A $ から(空でない)連続する部分列を選び、削除する。
$ x=1,2,\ldots,M $ に対し、次の問題を解いてください。
- $ A $ の要素の総和をちょうど $ x $ にするために必要な操作回数の最小値を求めてください。ただし、どのように操作を行っても $ A $ の要素の総和をちょうど $ x $ にできない場合は代わりに `-1` と出力してください。
なお、$ A $ が空である時、$ A $ の要素の総和は $ 0 $ であるとします。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ a_1 $ $ \ldots $ $ a_N $
Output Format
$ M $ 行出力せよ。$ i $ 行目には $ x=i $ に対する答えを出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N,M\ \leq\ 3000 $
- $ 1\ \leq\ a_i\ \leq\ 3000 $
- 入力はすべて整数
### Sample Explanation 1
操作回数が最小である操作の例を以下に示します。 - $ x=1 $ について、$ a_2,a_3,a_4 $ に対して操作をすることで $ A $ の要素の総和が $ x $ になります。 - $ x=2 $ について、$ a_3,a_4 $ に対して操作をした後、$ a_1 $ に対して操作をすることで $ A $ の要素の総和が $ x $ になります。 - $ x=3 $ について、$ a_3,a_4 $ に対して操作をすることで $ A $ の要素の総和が $ x $ になります。 - $ x=4 $ について、$ a_1,a_2,a_3 $ に対して操作をすることで $ A $ の要素の総和が $ x $ になります。 - $ x=5 $ について、$ a_2,a_3 $ に対して操作をすることで $ A $ の要素の総和が $ x $ になります。