Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. int dp[16][16][16][3];
  5.  
  6. int func( int a, int b, int c, int k) {
  7. if(a+b+c==1) {
  8. return dp[a][b][c][k];
  9. }
  10. else {
  11. if(dp[a][b][c][k]==-1) {
  12. if(k==0 && b>0 && c>0) {
  13. dp[a][b][c][k]= func(a, b-1, c, 1)+func(a, b, c-1, 2);
  14. }
  15. if(k==0 && b>0 && c==0) {
  16. dp[a][b][c][k]= func(a, b-1, c, 1);
  17. }
  18. if(k==0 && b==0 && c>0) {
  19. dp[a][b][c][k]= func(a, b, c-1, 2);
  20. }
  21. if(k==0 && b==0 && c==0) {
  22. dp[a][b][c][k]= 0;
  23. }
  24. if(k==1 && a>0 && c>0) {
  25. dp[a][b][c][k]= func(a-1, b, c, 0)+func(a, b, c-1, 2);
  26. }
  27. if(k==1 && a>0 && c==0) {
  28. dp[a][b][c][k]= func(a-1, b, c, 0);
  29. }
  30. if(k==1 && a==0 && c>0) {
  31. dp[a][b][c][k]= func(a, b, c-1, 2);
  32. }
  33. if(k==1 && a==0 && c==0) {
  34. dp[a][b][c][k]= 0;
  35. }
  36. if(k==2 && b>0 && a>0) {
  37. dp[a][b][c][k]= func(a, b-1, c, 1)+func(a-1, b, c, 0);
  38. }
  39. if(k==2 && b>0 && a==0) {
  40. dp[a][b][c][k]= func(a, b-1, c, 1);
  41. }
  42. if(k==2 && b==0 && a>0) {
  43. dp[a][b][c][k]= func(a-1, b, c, 0);
  44. }
  45. if(k==2 && b==0 && a==0) {
  46. dp[a][b][c][k]= 0;
  47. }
  48. }
  49. return dp[a][b][c][k];
  50. }
  51. }
  52. signed main () {
  53. for(int i=0; i<16; i++) {
  54. for(int j=0; j<16; j++) {
  55. for(int k=0; k<16; k++) {
  56. for(int l=0; l<3; l++) {
  57. dp[i][j][k][l]=-1;
  58. }
  59. }
  60. }
  61.  
  62. }
  63. dp[1][0][0][0]=0;
  64. dp[0][1][0][0]=1;
  65. dp[0][0][1][0]=1;
  66. dp[1][0][0][1]=1;
  67. dp[0][1][0][1]=0;
  68. dp[0][0][1][1]=1;
  69. dp[1][0][0][2]=1;
  70. dp[0][1][0][2]=1;
  71. dp[0][0][1][2]=0;
  72. int a, b, c;
  73. cin >> a >> b >> c;
  74. int n=a+b+c, ans=0;
  75. if(a>0) {
  76. ans+=func(a-1, b, c, 0);
  77. }
  78. if(b>0) {
  79. ans+=func( a, b-1, c, 1);
  80. }
  81. if(c>0) {
  82. ans+=func(a-1, b, c, 0);
  83. }
  84. cout << ans;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement