Submission

Status:

(-SSSSSSSSS)(-SSSS)(P-SSS)(SSSSSSSSSS)

Subtask/Task Score:

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

Score: 0

User: Trees

Problemset: กองไฟ

Language: cpp

Time: 0.012 second

Submitted On: 2026-03-06 16:10:17

#include<bits/stdc++.h>
using namespace std;
int x,c1,c2,c3;
int h = 1e9+7;
int dp[105][105][105][4];

int hello(int a,int b,int c,int last)
{
    if(a<0 || b<0 || c<0)return 0;
    if(a==0 && b==0 && c==0)return 1;
    if(dp[a][b][c][last] != 0)return dp[a][b][c][last];

    long long ans = 0;

    if(a!=0 && last != 1)
    ans = (ans + hello(a-1,b,c,1))%h;
    if(b!=0 && last != 2)
    ans = (ans + hello(a,b-1,c,2))%h;
    if(c!=0 && last != 3)
    ans = (ans + hello(a,b,c-1,3))%h;

    return dp[a][b][c][last] = ans;
}

int main()
{
    cin >> x >> c1 >> c2 >> c3;
    memset(dp,0,sizeof(dp));
    cout << hello(c1,c2,c3,0);

}