Submission #75646

# Submission time Handle Problem Language Result Execution time Memory
75646 2018-09-10T16:21:49 Z Andrei1998 Tents (JOI18_tents) C++17
100 / 100
121 ms 35968 KB
#include <bits/stdc++.h>

using namespace std;

const int MOD = 1000000000 + 7;
inline void add(int &where, const int val) {
    where += val;
    if (where >= MOD)
        where -= MOD;
}

const int NMAX = 3000 + 5;
int N, M;
int dp[NMAX][NMAX];

int main() {
    cin >> N >> M;
    for (int n = 0; n <= N; ++n) {
        for (int m = 0; m <= M; ++m) {
            if (n == 0 || m == 0) {
                dp[n][m] = 1;
                continue;
            }
            dp[n][m] = dp[n - 1][m]; // No tents on the first row
            add(dp[n][m], (4LL * m * dp[n - 1][m - 1]) % MOD); // A single tent the on first row and none on its column
            if (n >= 2)
                add(dp[n][m], (m * (n - 1LL) * dp[n - 2][m - 1]) % MOD); // A single tent the on first row and one more on its column
            if (m >= 2)
                add(dp[n][m], (m * (m - 1LL) / 2 * dp[n - 1][m - 2]) % MOD);
        }
    }
    cout << (dp[N][M] + MOD - 1) % MOD << endl;
    return 0;
}

# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 2 ms 512 KB Output is correct
3 Correct 2 ms 552 KB Output is correct
4 Correct 3 ms 1196 KB Output is correct
5 Correct 2 ms 1196 KB Output is correct
6 Correct 3 ms 1444 KB Output is correct
7 Correct 2 ms 1444 KB Output is correct
8 Correct 3 ms 1692 KB Output is correct
9 Correct 2 ms 1692 KB Output is correct
10 Correct 3 ms 2000 KB Output is correct
11 Correct 2 ms 2000 KB Output is correct
12 Correct 4 ms 2180 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 2 ms 512 KB Output is correct
3 Correct 2 ms 552 KB Output is correct
4 Correct 3 ms 1196 KB Output is correct
5 Correct 2 ms 1196 KB Output is correct
6 Correct 3 ms 1444 KB Output is correct
7 Correct 2 ms 1444 KB Output is correct
8 Correct 3 ms 1692 KB Output is correct
9 Correct 2 ms 1692 KB Output is correct
10 Correct 3 ms 2000 KB Output is correct
11 Correct 2 ms 2000 KB Output is correct
12 Correct 4 ms 2180 KB Output is correct
13 Correct 2 ms 2180 KB Output is correct
14 Correct 9 ms 9996 KB Output is correct
15 Correct 79 ms 33092 KB Output is correct
16 Correct 7 ms 33092 KB Output is correct
17 Correct 21 ms 33092 KB Output is correct
18 Correct 24 ms 33092 KB Output is correct
19 Correct 88 ms 34964 KB Output is correct
20 Correct 69 ms 34964 KB Output is correct
21 Correct 48 ms 34964 KB Output is correct
22 Correct 52 ms 34964 KB Output is correct
23 Correct 32 ms 34964 KB Output is correct
24 Correct 121 ms 35968 KB Output is correct
25 Correct 84 ms 35968 KB Output is correct
26 Correct 93 ms 35968 KB Output is correct
27 Correct 105 ms 35968 KB Output is correct