제출 #850937

#제출 시각아이디문제언어결과실행 시간메모리
850937ItamarNoM (RMI21_nom)C++14
100 / 100
239 ms188496 KiB
#include <iostream> using namespace std; #include <vector> #define ll long long #define pll pair<ll,ll> #define vll vector<ll> const int siz = 4001; ll dp[siz][siz]; ll fac[siz]; ll c[siz][siz]; const int mod = 1e9 + 7; int main() { int n, m; cin >> n >> m; dp[0][0] = 1; fac[0] = 1; for (int i = 1; i < siz; i++) { fac[i] = (i * fac[i - 1]) % mod; } for (int i = 0; i < siz; i++) { for (int j = 0; j < siz; j++) { if (j == 0)c[i][j] = 1; else if (i == 0)c[i][j] = 0; else c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod; } } for (int i = 1; i <= m; i++) { int pile = ((2 * n) / m) + (i <= (2 * n) % m); for (int j = 0; j <= 2 * n; j++) { for (int k = 0; k<=j && j+pile>=2*k&& k<=pile; k++) { dp[i][j] =(dp[i][j]+(((dp[i - 1][j + pile - 2 * k] * ((c[j + pile - 2 * k][j - k] * fac[pile - k]) % mod)) % mod)* c[pile][k]) % mod)%mod; } } } for (int i = 0; i < n; i++) { dp[m][0]=(2*dp[m][0])%mod; } dp[m][0] = (dp[m][0] * fac[n]) % mod; cout << dp[m][0]; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...