Submission #826325


Source Code Expand

// In the name of God

#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <deque>
#include <assert.h>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <stdio.h>
#include <string.h>
#include <utility>
#include <math.h>
#include <bitset>
#include <iomanip>

using namespace std;

#define rep(i, n) for (int i = 0, _n = (int)(n); i < _n; ++i)
#define int long long
const int N = 2005, M = N * N, mod = (int) 1e9 + 7;
int pw(int a, int b) { return b != 0? pw(a * a % mod, b >> 1) * (b & 1? a: 1) % mod: 1; }
int ft[M], fi[M];
int dp[N][N];

int comb(int n, int r) {
    if (r < 0 || n < 0 || n - r < 0) return 0;
    return ft[n] * fi[r] % mod * fi[n - r] % mod;
}
void sadd(int &x, int y) {
    x += y;
    x %= mod;
}

int32_t main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    ft[0] = fi[0] = 1;
    for (int i = 1; i < M; ++i)
        ft[i] = ft[i - 1] * i % mod;
    fi[M - 1] = pw(ft[M - 1], mod - 2);
    for (int i = M - 2; i >= 0; --i)
        fi[i] = fi[i + 1] * (i + 1) % mod;
    int n, k;
    cin >> n >> k;
    if (k == 1) {
        cout << 1 << endl;
        return 0;
    }
    /*
    if (k == 2) {
        cout << (mod + comb(n + n, n) - comb(n + n, n + 1)) % mod;
        return 0;
    } */
    dp[0][0] = 1;
    for (int p1 = 0; p1 <= n; ++p1)
        for (int p0 = 0; p0 <= p1; ++p0) {
            if (p1) {
                int g = p0 * k + (p1 - p0 - 1) * (k - 1);
                sadd(dp[p1][p0], dp[p1 - 1][p0] * comb(g + 1 + k - 2 - 1, g) % mod);
            }
            if (p0) {
                sadd(dp[p1][p0], dp[p1][p0 - 1]);
            }
        }
    cout << dp[n][n] * ft[n] % mod << endl;
}






Submission Info

Submission Time
Task F - Leftmost Ball
User Reyna
Language C++14 (GCC 5.4.1)
Score 1600
Code Size 1785 Byte
Status AC
Exec Time 287 ms
Memory 85760 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1600 / 1600
Status
AC × 4
AC × 24
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt
Case Name Status Exec Time Memory
0_00.txt AC 172 ms 63104 KB
0_01.txt AC 171 ms 63104 KB
0_02.txt AC 171 ms 63104 KB
0_03.txt AC 284 ms 85760 KB
1_00.txt AC 173 ms 63104 KB
1_01.txt AC 171 ms 63104 KB
1_02.txt AC 171 ms 63104 KB
1_03.txt AC 287 ms 85760 KB
1_04.txt AC 280 ms 85120 KB
1_05.txt AC 281 ms 85632 KB
1_06.txt AC 280 ms 85248 KB
1_07.txt AC 274 ms 84352 KB
1_08.txt AC 275 ms 84480 KB
1_09.txt AC 278 ms 84608 KB
1_10.txt AC 275 ms 84480 KB
1_11.txt AC 282 ms 85248 KB
1_12.txt AC 183 ms 66304 KB
1_13.txt AC 263 ms 82304 KB
1_14.txt AC 173 ms 63616 KB
1_15.txt AC 198 ms 69504 KB
1_16.txt AC 217 ms 73472 KB
1_17.txt AC 266 ms 82816 KB
1_18.txt AC 176 ms 64768 KB
1_19.txt AC 282 ms 85504 KB