# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
43984 | ruhanhabib39 | Tents (JOI18_tents) | C++17 | 122 ms | 71340 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int MX = 3000;
const long long MOD = 1e9 + 7;
long long dp[MX + 10][MX + 10];
long long calc(long long H, long long W) {
for(int w = 0; w <= W; w++) {
dp[0][w] = 1;
}
for(int h = 0; h <= H; h++) {
dp[h][0] = 1;
}
for(int h = 1; h <= H; h++) {
for(int w = 1; w <= W; w++) {
long long zero = dp[h-1][w];
long long one = 4*w * dp[h-1][w-1] % MOD;
long long two_horiz = 0, two_vert = 0;
if(w >= 2) two_horiz = w*(w - 1) / 2 * dp[h-1][w-2] % MOD;
if(h >= 2) two_vert = w * (h - 1) * dp[h-2][w-1] % MOD;
dp[h][w] = (zero + one + two_horiz + two_vert) % MOD;
}
}
return dp[H][W];
}
int main() {
long long H, W; cin >> H >> W;
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |