fork download
  1. class Solution {
  2. public:
  3. int m = 1e9+7;
  4. typedef long long ll;
  5. int dp[1010][5][2010];
  6. ll solve(string& s, int i, int prev, int score){
  7. if(i >= s.size()) {
  8. if(score > 0){
  9. return 1;
  10. }
  11. return 0;
  12. }
  13. if(dp[i][prev+1][score+1010] != -1) return dp[i][prev+1][score+1010];
  14. ll ans = 0;
  15. if(s[i] == 'E'){
  16. if(prev==-1){
  17. ll op1 = solve(s, i+1, 0, score+1);
  18. ll op2 = solve(s, i+1, 1, score-1);
  19. ll op3 = solve(s, i+1, 2, score);
  20. ans= (ans%m+ ((op1%m + op2%m)%m + op3%m)%m)%m;
  21. }
  22. else if(prev == 0){
  23. ll op1 = solve(s, i+1, 1, score-1);
  24. ll op2 = solve(s, i+1, 2, score);
  25. ans = (ans%m + (op1%m + op2%m)%m)%m;
  26. }
  27. else if(prev==1){
  28. ll op1 = solve(s, i+1, 0, score+1);
  29. ll op2 = solve(s, i+1, 2, score);
  30. ans = (ans%m + (op1%m + op2%m)%m)%m;
  31. }
  32. else{
  33. ll op1 = solve(s, i+1, 0, score+1);
  34. ll op2 = solve(s, i+1, 1, score-1);
  35. ans = (ans%m + (op1%m + op2%m)%m)%m;
  36. }
  37. }
  38. else if(s[i] == 'F'){
  39. if(prev==-1){
  40. ll op1 = solve(s, i+1, 0, score);
  41. ll op2 = solve(s, i+1, 1, score+1);
  42. ll op3 = solve(s, i+1, 2, score-1);
  43. ans= (ans%m+ ((op1%m + op2%m)%m + op3%m)%m)%m;
  44. }
  45. else if(prev == 0){
  46. ll op1 = solve(s, i+1, 1, score+1);
  47. ll op2 = solve(s, i+1, 2, score-1);
  48. ans = (ans%m + (op1%m + op2%m)%m)%m;
  49. }
  50. else if(prev==1){
  51. ll op1 = solve(s, i+1, 0, score);
  52. ll op2 = solve(s, i+1, 2, score-1);
  53. ans = (ans%m + (op1%m + op2%m)%m)%m;
  54. }
  55. else{
  56. ll op1 = solve(s, i+1, 0, score);
  57. ll op2 = solve(s, i+1, 1, score+1);
  58. ans = (ans%m + (op1%m + op2%m)%m)%m;
  59. }
  60. }
  61. else{
  62. if(prev==-1){
  63. ll op1 = solve(s, i+1, 0, score-1);
  64. ll op2 = solve(s, i+1, 1, score);
  65. ll op3 = solve(s, i+1, 2, score+1);
  66. ans= (ans%m+ ((op1%m + op2%m)%m + op3%m)%m)%m;
  67. }
  68. else if(prev == 0){
  69. ll op1 = solve(s, i+1, 1, score);
  70. ll op2 = solve(s, i+1, 2, score+1);
  71. ans = (ans%m + (op1%m + op2%m)%m)%m;
  72. }
  73. else if(prev==1){
  74. ll op1 = solve(s, i+1, 0, score-1);
  75. ll op2 = solve(s, i+1, 2, score+1);
  76. ans = (ans%m + (op1%m + op2%m)%m)%m;
  77. }
  78. else{
  79. ll op1 = solve(s, i+1, 0, score-1);
  80. ll op2 = solve(s, i+1, 1, score);
  81. ans = (ans%m + (op1%m + op2%m)%m)%m;
  82. }
  83. }
  84. return dp[i][prev+1][score+1010] = ans;
  85. }
  86. int countWinningSequences(string s) {
  87. memset(dp, -1, sizeof(dp));
  88. return solve(s, 0, -1, 0)%m;
  89.  
  90. }
  91. };
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:6:14: error: ‘string’ has not been declared
     ll solve(string& s, int i, int prev, int score){
              ^~~~~~
prog.cpp:86:31: error: ‘string’ has not been declared
     int countWinningSequences(string s) {
                               ^~~~~~
prog.cpp: In member function ‘Solution::ll Solution::solve(int&, int, int, int)’:
prog.cpp:7:19: error: request for member ‘size’ in ‘s’, which is of non-class type ‘int’
         if(i >= s.size()) {
                   ^~~~
prog.cpp:15:15: error: invalid types ‘int[int]’ for array subscript
         if(s[i] == 'E'){
               ^
prog.cpp:38:20: error: invalid types ‘int[int]’ for array subscript
         else if(s[i] == 'F'){
                    ^
prog.cpp: In member function ‘int Solution::countWinningSequences(int)’:
prog.cpp:87:9: error: ‘memset’ was not declared in this scope
         memset(dp, -1, sizeof(dp));
         ^~~~~~
prog.cpp:87:9: note: ‘memset’ is defined in header ‘<cstring>’; did you forget to ‘#include <cstring>’?
prog.cpp:1:1:
+#include <cstring>
 class Solution {
prog.cpp:87:9:
         memset(dp, -1, sizeof(dp));
         ^~~~~~
stdout
Standard output is empty