D - 天下一ボディービルコンテスト Editorial

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋君は、頭には自信がありませんが、体には自信があります。そこで、高橋君はボディービルコンテストに出ることにしました。

高橋君には筋肉が NN 個ついています。 高橋君は、ボディービルコンテストが開かれるまでの DD 日間、毎日トレーニングをすることにしました。

高橋君は、毎日筋肉をひとつ選び、トレーニングしてその筋肉を 11kg 増やします。

高橋君は、ボディービルコンテストで優勝するために、各筋肉をどれだけ増やすか、目標を設定しました。ですが、その目標を達成するために、どのようなスケジュールでトレーニングをすれば良いかが分かりません。

高橋君のために、トレーニングスケジュールが何通りあるかを、mod 10000000071000000007で求めてください。


入力

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

NN DD
a1a_1
a2a_2
......
aNa_N
  • 11 行目は、高橋君の筋肉の数 NN (1N301 \leq N \leq 30) と トレーニング日数 DD (1D1091 \leq D \leq 10^9) が空白区切りで与えられる。
  • 22 行目から N+1N+1 行目までの NN 行は、ii (1iN1 \leq i \leq N) 番目の筋肉を最低何kg増やしたいかの目標 ai (1ai30)a_i\ (1 \leq a_i \leq 30) が与えられる。

部分点

  • N5, ai5, D500N \leq 5,\ a_i \leq 5,\ D \leq 500 の入力に正解すると、280280 点満点に対して部分点として、4040 点が与えられる。
  • N5, ai5N \leq 5,\ a_i \leq 5 の入力に正解すると、280280 点満点に対して部分点として、上記とは別に 100100 点が与えられる。

出力

高橋君が全ての目標を達成するための、スケジュールの組み方が何通りあるかを、10000000071000000007 で割った余りを出力しなさい。

また、出力の最後には改行をいれること。


入力例 1

2 3
1
1

出力例 1

6

鍛えるべき筋肉が22つあり、33日間トレーニングします。

スケジュールの組み方は、1日目から順番に、{1,1,2}, {1,2,1}, {1,2,2}, {2,1,1}, {2,1,2}, {2,2,1}の66通りです。


入力例 2

4 4
1
1
1
1

出力例 2

24

鍛えるべき筋肉が44つあり、44日間のトレーニングでそれぞれ11つの筋肉を選ぶ必要があり、その組み合わせは4!=244!=24通りです。


入力例 3

13 12345678
1
2
3
4
5
6
7
8
9
10
11
12
13

出力例 3

910759485


2025-04-04 (Fri)
11:37:12 +00:00