提出 #26997523


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

#define nl "\n"
#define nf endl
#define ll long long
#define pb push_back
#define _ << ' ' <<

#define INF (ll)1e18
#define mod 1000000007
#define maxn 1010
#define maxm 22

ll i, i1, j, k, k1, t, n, m, res, flag[10], a[maxn], b;
ll dp[maxm][maxn], fc[maxn], nv[maxn], x;

ll fxp(ll b, ll e) {
    ll r = 1, k = b;
    while (e != 0) {
        if (e % 2) r = (r * k) % mod;
        k = (k * k) % mod; e /= 2;
    }
    return r;
}

ll inv(ll x) {
    return fxp(x, mod - 2);
}

ll bnm(ll a, ll b) {
    if (a < b || b < 0) return 0;
    ll r = (fc[a] * nv[b]) % mod;
    r = (r * nv[a - b]) % mod;
    return r;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    #if !ONLINE_JUDGE && !EVAL
        ifstream cin("input.txt");
        ofstream cout("output.txt");
    #endif

    fc[0] = 1; nv[0] = 1;
    for (i = 1; i < maxn; i++) {
        fc[i] = (i * fc[i - 1]) % mod; nv[i] = inv(fc[i]);
    }

    cin >> n >> m;
    for (i = 1; i <= m; i++) {
        cin >> a[i];
    }

    dp[0][0] = 1;
    for (i = 1; i <= m; i++) {
        for (j = 0; j <= n; j++) {
            for (k = 0; k <= min(j, a[i]); k++) {
                x = (dp[i - 1][j - k] * bnm(n - j + k, k)) % mod;
                x = (x * bnm(n - k, a[i] - k)) % mod;
                dp[i][j] = (dp[i][j] + x) % mod;
            }
        }
    }

    cout << dp[m][n] << nl;

    return 0;
}

提出情報

提出日時
問題 C - Cookie Distribution
ユーザ TheScrasse
言語 C++ (GCC 9.2.1)
得点 800
コード長 1489 Byte
結果 AC
実行時間 118 ms
メモリ 3772 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 800 / 800
結果
AC × 2
AC × 32
セット名 テストケース
Sample sample_01, sample_02
All max_01, max_02, max_03, max_04, max_05, max_06, max_07, max_08, max_09, max_10, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09, random_10, random_small_01, random_small_02, random_small_03, random_small_04, random_small_05, random_small_06, random_small_07, random_small_08, random_small_09, random_small_10, sample_01, sample_02
ケース名 結果 実行時間 メモリ
max_01 AC 107 ms 3772 KiB
max_02 AC 94 ms 3628 KiB
max_03 AC 100 ms 3672 KiB
max_04 AC 118 ms 3704 KiB
max_05 AC 91 ms 3712 KiB
max_06 AC 107 ms 3700 KiB
max_07 AC 100 ms 3632 KiB
max_08 AC 101 ms 3724 KiB
max_09 AC 84 ms 3712 KiB
max_10 AC 112 ms 3732 KiB
random_01 AC 14 ms 3600 KiB
random_02 AC 7 ms 3524 KiB
random_03 AC 40 ms 3632 KiB
random_04 AC 33 ms 3672 KiB
random_05 AC 11 ms 3472 KiB
random_06 AC 16 ms 3568 KiB
random_07 AC 53 ms 3660 KiB
random_08 AC 16 ms 3620 KiB
random_09 AC 55 ms 3644 KiB
random_10 AC 20 ms 3684 KiB
random_small_01 AC 2 ms 3556 KiB
random_small_02 AC 2 ms 3544 KiB
random_small_03 AC 3 ms 3560 KiB
random_small_04 AC 2 ms 3580 KiB
random_small_05 AC 3 ms 3500 KiB
random_small_06 AC 2 ms 3564 KiB
random_small_07 AC 2 ms 3612 KiB
random_small_08 AC 3 ms 3540 KiB
random_small_09 AC 2 ms 3608 KiB
random_small_10 AC 3 ms 3524 KiB
sample_01 AC 2 ms 3536 KiB
sample_02 AC 67 ms 3704 KiB