Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define int long long
- int dp[16][16][16][3];
- int func( int a, int b, int c, int k) {
- if(a+b+c==1) {
- return dp[a][b][c][k];
- }
- else {
- if(dp[a][b][c][k]==-1) {
- if(k==0 && b>0 && c>0) {
- dp[a][b][c][k]= func(a, b-1, c, 1)+func(a, b, c-1, 2);
- }
- if(k==0 && b>0 && c==0) {
- dp[a][b][c][k]= func(a, b-1, c, 1);
- }
- if(k==0 && b==0 && c>0) {
- dp[a][b][c][k]= func(a, b, c-1, 2);
- }
- if(k==0 && b==0 && c==0) {
- dp[a][b][c][k]= 0;
- }
- if(k==1 && a>0 && c>0) {
- dp[a][b][c][k]= func(a-1, b, c, 0)+func(a, b, c-1, 2);
- }
- if(k==1 && a>0 && c==0) {
- dp[a][b][c][k]= func(a-1, b, c, 0);
- }
- if(k==1 && a==0 && c>0) {
- dp[a][b][c][k]= func(a, b, c-1, 2);
- }
- if(k==1 && a==0 && c==0) {
- dp[a][b][c][k]= 0;
- }
- if(k==2 && b>0 && a>0) {
- dp[a][b][c][k]= func(a, b-1, c, 1)+func(a-1, b, c, 0);
- }
- if(k==2 && b>0 && a==0) {
- dp[a][b][c][k]= func(a, b-1, c, 1);
- }
- if(k==2 && b==0 && a>0) {
- dp[a][b][c][k]= func(a-1, b, c, 0);
- }
- if(k==2 && b==0 && a==0) {
- dp[a][b][c][k]= 0;
- }
- }
- return dp[a][b][c][k];
- }
- }
- signed main () {
- for(int i=0; i<16; i++) {
- for(int j=0; j<16; j++) {
- for(int k=0; k<16; k++) {
- for(int l=0; l<3; l++) {
- dp[i][j][k][l]=-1;
- }
- }
- }
- }
- dp[1][0][0][0]=0;
- dp[0][1][0][0]=1;
- dp[0][0][1][0]=1;
- dp[1][0][0][1]=1;
- dp[0][1][0][1]=0;
- dp[0][0][1][1]=1;
- dp[1][0][0][2]=1;
- dp[0][1][0][2]=1;
- dp[0][0][1][2]=0;
- int a, b, c;
- cin >> a >> b >> c;
- int n=a+b+c, ans=0;
- if(a>0) {
- ans+=func(a-1, b, c, 0);
- }
- if(b>0) {
- ans+=func( a, b-1, c, 1);
- }
- if(c>0) {
- ans+=func(a-1, b, c, 0);
- }
- cout << ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement