ログインしてください。
提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |