Submission #1237556

#TimeUsernameProblemLanguageResultExecution timeMemory
1237556opeleklanosMagneti (COCI21_magneti)C++20
10 / 110
5 ms4160 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

#define ll long long
#define MOD (ll)(1e9 + 7)

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;

            dp[i][j] %= MOD;
        }
    }

    ll exp = 1;
    for(ll i = 1; i<=n; i++){
        (exp*=i)%MOD;
        exp %=MOD;
    }

    cout<<(dp[n-1][s-1] * exp) %MOD<<'\n';

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...