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;
}