Submission
Status:
(-SSSSSSSSS)(-SSSS)(-SSSS)(SSSSSSSSSS)
Subtask/Task Score:
{0/20}{0/30}{0/30}{0/20}
Score: 0
User: kittipos
Problemset: กองไฟ
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-09 22:41:05
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+7;
int solve(vector<int> left, int prev, int start) {
// cout << "check" << endl;
int sum = 0;
bool fork = false;
for (int i = 0; i < 3; i++) {
if (left[i] == 0 || i == prev) continue;
fork = true;
vector<int> new_left = left;
new_left[i]--;
sum += solve(new_left, i, start);
sum %= MOD;
}
if (!fork) {
return 1;
}
return sum;
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> left;
left.resize(3);
for (int i = 0; i < 3; i++) {
cin >> left[i];
}
int sum = 0;
for (int i = 0; i < 3; i++) {
vector<int> new_left = left;
if (new_left[i] == 0) continue;
new_left[i]--;
sum += solve(new_left, i, i);
sum %= MOD;
}
cout << sum;
return 0;
}