#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define ll long long
#define MOD 1000000007
int main(void){
// freopen("input.txt", "r", stdin);
ll n, s;
cin>>n>>s;
vector<vector<ll>> dp(n, vector<ll>(s, 0));
vector<ll> mag(n, 0);
for(ll i = 0; i<n; i++) cin>>mag[i];
for(ll i = 0; i<n; i++){
for(ll j = 0; j<s; j++){
if(i == 0&&j == 0) {dp[i][j] = 1; continue;}
if(i == 0) (dp[i][j] += 1) % MOD;
if(j - mag[0]>=0 && i>0) (dp[i][j] += dp[i-1][j-mag[0]])%MOD;
if(j>0) (dp[i][j] += dp[i][j-1])%MOD;
}
}
ll exp = 1;
for(ll i = 1; i<=n; i++) (exp*=i)%MOD;
cout<<(dp[n-1][s-1] * exp) %MOD<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |