Submission #798424

#TimeUsernameProblemLanguageResultExecution timeMemory
798424vjudge1Tents (JOI18_tents)C++17
100 / 100
123 ms71496 KiB
#ifdef Home
#define _GLIBCXX_DEBUG
#endif // Home

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

const int N = 3030;
const ll mod = 1e9 + 7;

void add(ll &x, ll y) {
    x += y;
    x %= mod;
    if(x < 0) {
        x += mod;
    }
}

ll dp[N][N];

main() {
#ifdef Home
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif // Home
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    cin >> n >> m;
    for(int i = N; i --> 0; dp[i][0] = dp[0][i] = 1);
    for(int i = 1; i <= n; ++ i) {
          for(int j = 1; j <= m; ++ j) {
                add(dp[i][j], dp[i - 1][j]);
                add(dp[i][j], dp[i - 1][j - 1] * j * 4);
                if(j > 1) {
                    add(dp[i][j], dp[i - 1][j - 2] * (j * j - j) / 2);
                }
                if(i > 1) {
                    add(dp[i][j], dp[i - 2][j - 1] * j * (i - 1));   
                }
          }
    }
    add(dp[n][m], -1);
    cout << dp[n][m];
} 

Compilation message (stderr)

tents.cpp:25:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   25 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...