Submission

Status:

(PPPPPPPPPP)(PPPPP)(PPPPP)(PPPPPPPPPP)

Subtask/Task Score:

{20/20}{30/30}{30/30}{20/20}

Score: 100

User: Nay-O

Problemset: กองไฟ

Language: cpp

Time: 0.040 second

Submitted On: 2026-04-25 10:56:21

#include<bits/stdc++.h>
using namespace std;
#define int unsigned int

const int N = 155, MOD=1e9+7;
int dp[N][N][N][3][3];

int32_t main(){
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    dp[0][0][1][2][2]=dp[0][1][0][1][1]=dp[1][0][0][0][0]=1;
    
    

    int n,a,b,c; cin>>n>>a>>b>>c;

    for(int s = 0; s < a+b+c+5; s++){
        for(int i = 0; i <= s; i++){
            for(int j = 0; j <= s-i; j++){
                int k = s-i-j;
                for(int a = 0; a < 3; a++){
                    dp[i+1][j][k][0][a]+=dp[i][j][k][1][a]+dp[i][j][k][2][a];
                    dp[i+1][j][k][0][a]%=MOD;
                    dp[i][j+1][k][1][a]+=dp[i][j][k][0][a]+dp[i][j][k][2][a];
                    dp[i][j+1][k][1][a]%=MOD;
                    dp[i][j][k+1][2][a]+=dp[i][j][k][1][a]+dp[i][j][k][0][a];
                    dp[i][j][k+1][2][a]%MOD;
                }
            }
        }
    }

    cout << (((dp[a][b][c][0][1]+dp[a][b][c][0][2])%MOD+(dp[a][b][c][1][0]+dp[a][b][c][1][2])%MOD)%MOD+(dp[a][b][c][2][0]+dp[a][b][c][2][1])%MOD)%MOD;

    return 0;
}