제출 #1237409

#제출 시각아이디문제언어결과실행 시간메모리
1237409opeleklanosMagneti (COCI21_magneti)C++20
0 / 110
3 ms4160 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...