Submission #1283910

#TimeUsernameProblemLanguageResultExecution timeMemory
1283910thaibeo123Tents (JOI18_tents)C++17
100 / 100
61 ms35540 KiB
#include <bits/stdc++.h>
using namespace std;

#define NAME "A"
#define ll long long
#define fi first
#define se second
#define pb push_back
#define all(x) x.begin(), x.end()
#define MASK(x) (1ll << (x))
#define BIT(x, i) (((x) >> (i)) & 1)

const int N = 3000 + 5;
const int mod = 1e9 + 7;

int add(int a, int b) {
    return a + b - mod * (a + b >= mod); 
}

int sub(int a, int b) {
    return add(a, mod - b);
}

int mul(int a, int b) {
    return 1ll * a * b % mod;
}

int n, m;
int dp[N][N];

void input() {
    cin >> n >> m;
}

void solve() {
    for (int i = 0; i <= max(n, m); i++) {
        dp[i][0] = dp[0][i] = 1;
    } 
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            dp[i][j] = dp[i][j - 1];
            dp[i][j] = add(dp[i][j], mul(mul(4, i), dp[i - 1][j - 1]));
            dp[i][j] = add(dp[i][j], mul(mul(i, j - 1), dp[i - 1][j - 2]));
            dp[i][j] = add(dp[i][j], mul(1ll * i * (i - 1) / 2, dp[i - 2][j - 1]));
        }
    }
    cout << sub(dp[n][m], 1);
}

signed main() {
    if (fopen(NAME".INP", "r")) {
        freopen(NAME".INP", "r", stdin);
        freopen(NAME".OUT", "w", stdout);
    }
    cin.tie(0)->sync_with_stdio(0);

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

    return 0;
}

Compilation message (stderr)

tents.cpp: In function 'int main()':
tents.cpp:52:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   52 |         freopen(NAME".INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
tents.cpp:53:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   53 |         freopen(NAME".OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...