atcoder#DPM. Candies

Candies

配点 : 100100

問題文

NN 人の子供たちがいます。 子供たちには 1,2,,N1, 2, \ldots, N と番号が振られています。

子供たちは KK 個の飴を分け合うことにしました。 このとき、各 ii (1iN1 \leq i \leq N) について、子供 ii が受け取る飴の個数は 00 以上 aia_i 以下でなければなりません。 また、飴が余ってはいけません。

子供たちが飴を分け合う方法は何通りでしょうか? 109+710^9 + 7 で割った余りを求めてください。 ただし、22 通りの方法が異なるとは、ある子供が存在し、その子供が受け取る飴の個数が異なることを言います。

制約

  • 入力はすべて整数である。
  • 1N1001 \leq N \leq 100
  • 0K1050 \leq K \leq 10^5
  • 0aiK0 \leq a_i \leq K

入力

入力は以下の形式で標準入力から与えられる。

NN KK

a1a_1 a2a_2 \ldots aNa_N

出力

子供たちが飴を分け合う方法は何通りか? 109+710^9 + 7 で割った余りを出力せよ。

3 4
1 2 3
5

子供たちが飴を分け合う方法は、次の 55 通りです。 各数列において、ii 番目の要素は子供 ii が受け取る飴の個数を表します。

  • (0,1,3)(0, 1, 3)
  • (0,2,2)(0, 2, 2)
  • (1,0,3)(1, 0, 3)
  • (1,1,2)(1, 1, 2)
  • (1,2,1)(1, 2, 1)
1 10
9
0

子供たちが飴を分け合う方法が存在しない場合もあります。

2 0
0 0
1

子供たちが飴を分け合う方法は、次の 11 通りです。

  • (0,0)(0, 0)
4 100000
100000 100000 100000 100000
665683269

答えを 109+710^9 + 7 で割った余りを出力することを忘れずに。