# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
995548 | 2024-06-09T10:31:40 Z | mariamp1 | Tents (JOI18_tents) | C++14 | 0 ms | 0 KB |
#include<bits/stdc++.h> using namespace std; #define int long long const int N = 3005; int dp[3005][3005]; const int mod = 1e9 + 7; int main(){ int h, w; cin >> h >> w; int ans = 0; for(int i = 1; i <= h; i++){ for(int j = 1; j <= w; j++){ ans=0; ans += dp[i-1][j]; if(j > 1){ ans += (j * (j-1))/2 * (dp[i-1][j-2]+1); } ans += (dp[i-1][j-1]+1) * j * 4; if(i > 1){ ans += (dp[i-2][j - 1] + 1) * (i-1) * (j); } ans %= mod; dp[i][j]=ans; } } cout << ans << endl; }