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