Submission #851860

#TimeUsernameProblemLanguageResultExecution timeMemory
851860vjudge1Magneti (COCI21_magneti)C++17
10 / 110
1 ms492 KiB
//author:
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;

#define ONLINE_JUDGE

const int MOD = 1e9 + 7;

int fak[10000 + 5];

int fp(int a, int b) {
    int res = 1;
    while(b) {
        if(b & 1) {
            res = (1LL * res * a) % MOD;
        }

        a = (1LL * a * a) % MOD;
        b >>= 1;
    }

    return res;
}

int divide(int a) {
    return fp(a, MOD -2);
}

int divide(int a, int b) {
    return (1LL * a * divide(b)) % MOD;
}

int comb(int n, int r) {
    if(n < r) 
        return 0;

    return divide(fak[n], (1LL * fak[r] * fak[n - r]) % MOD);
}

void solve() {
    int n, l;
    cin >> n >> l;

    vector <int> vec(n);
    for(int &i : vec) 
        cin >> i;
        
    int parca = l - ((n -1) * (vec[0] -1));

    cout << (1LL * comb(parca, n) * fak[n]) % MOD;
    
    return;
}

signed main() {
    #ifndef ONLINE_JUDGE
        freopen(".in", "r", stdin);
        freopen(".out", "w", stdout);
    #endif

    fak[0] = 1;
    for(int i = 1; i <= 10000; i++)
        fak[i] = (1LL * fak[i -1] * i) % MOD;

    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    int t = 1; //cin >> t;
    while(t--)
        solve();

    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...