Submission
Status:
(PPPPPPPPPP)(-----)(PPPPP)(SSSSSSSSSS)
Score: 50
User: njoop
Problemset: กองไฟ
Language: cpp
Time: 0.013 second
Submitted On: 2025-05-19 00:47:00
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 1e9+7;
long long dp[51][51][51][4][4],ans;
signed main() {
cin.tie(0)->sync_with_stdio(0);
int n,a,b,c; cin >> n >> a >> b >> c;
dp[1][0][0][1][1] = 1;
dp[0][1][0][2][2] = 1;
dp[0][0][1][3][3] = 1;
if(c <= 1) return 0;
for(int i=0;i<=a;i++) {
for(int j=0;j<=b;j++) {
for(int k=0;k<=c;k++) {
for(int l=1;l<=3;l++) {
if (i) {
dp[i][j][k][l][1] += dp[i-1][j][k][l][2] + dp[i-1][j][k][l][3];
dp[i][j][k][l][1] %= mod;
}
if (j) {
dp[i][j][k][l][2] += dp[i][j-1][k][l][1] + dp[i][j-1][k][l][3];
dp[i][j][k][l][2] %= mod;
}
if (k) {
dp[i][j][k][l][3] += dp[i][j][k-1][l][1] + dp[i][j][k-1][l][2];
dp[i][j][k][l][3] %= mod;
}
}
}
}
}
for(int i=1;i<=3;i++) {
for(int j=1;j<=3;j++) {
if (i==j) continue;
ans += dp[a][b][c][i][j];
ans %= mod;
}
}
cout << ans;
}