fork download
  1. class Solution {
  2. public:
  3. int numOfWays(vector<int>& nums) {
  4. long long mod = 1e9 + 7;
  5. int n = nums.size();
  6.  
  7. // Pascal triangle
  8. table.resize(n + 1);
  9. for(int i = 0; i < n + 1; ++i){
  10. table[i] = vector<long long>(i + 1, 1);
  11. for(int j = 1; j < i; ++j){
  12. table[i][j] = (table[i-1][j-1] + table[i-1][j]) % mod;
  13. }
  14. }
  15.  
  16. long long ans = dfs(nums, mod);
  17. return ans % mod - 1;
  18. }
  19.  
  20. private:
  21. vector<vector<long long>> table;
  22. long long dfs(vector<int> &nums, long long mod){
  23. int n = nums.size();
  24. if(n <= 2) return 1;
  25.  
  26. // find left sub-sequence elements and right sub-sequence elements
  27. vector<int> left, right;
  28. for(int i = 1; i < nums.size(); ++i){
  29. if(nums[i] < nums[0]) left.push_back(nums[i]);
  30. else right.push_back(nums[i]);
  31. }
  32.  
  33. // recursion with left subtree and right subtree
  34. long long left_res = dfs(left, mod) % mod;
  35. long long right_res = dfs(right, mod) % mod;
  36.  
  37. // look up table and multiple them together
  38. int left_len = left.size(), right_len = right.size();
  39. return (((table[n - 1][left_len] * left_res) % mod) * right_res) % mod;
  40. }
  41. };
  42.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:3:19: error: ‘vector’ has not been declared
     int numOfWays(vector<int>& nums) {
                   ^~~~~~
prog.cpp:3:25: error: expected ‘,’ or ‘...’ before ‘<’ token
     int numOfWays(vector<int>& nums) {
                         ^
prog.cpp:21:5: error: ‘vector’ does not name a type
     vector<vector<long long>> table;
     ^~~~~~
prog.cpp:22:19: error: ‘vector’ has not been declared
     long long dfs(vector<int> &nums, long long mod){
                   ^~~~~~
prog.cpp:22:25: error: expected ‘,’ or ‘...’ before ‘<’ token
     long long dfs(vector<int> &nums, long long mod){
                         ^
prog.cpp: In member function ‘int Solution::numOfWays(int)’:
prog.cpp:5:11: error: ‘nums’ was not declared in this scope
   int n = nums.size();
           ^~~~
prog.cpp:5:11: note: suggested alternative: ‘enum’
   int n = nums.size();
           ^~~~
           enum
prog.cpp:8:9: error: ‘table’ was not declared in this scope
         table.resize(n + 1);
         ^~~~~
prog.cpp:8:9: note: suggested alternative: ‘mutable’
         table.resize(n + 1);
         ^~~~~
         mutable
prog.cpp:10:24: error: ‘vector’ was not declared in this scope
             table[i] = vector<long long>(i + 1, 1);
                        ^~~~~~
prog.cpp:10:31: error: expected primary-expression before ‘long’
             table[i] = vector<long long>(i + 1, 1);
                               ^~~~
prog.cpp: In member function ‘long long int Solution::dfs(int)’:
prog.cpp:23:17: error: ‘nums’ was not declared in this scope
         int n = nums.size();
                 ^~~~
prog.cpp:23:17: note: suggested alternative: ‘enum’
         int n = nums.size();
                 ^~~~
                 enum
prog.cpp:27:9: error: ‘vector’ was not declared in this scope
         vector<int> left, right;
         ^~~~~~
prog.cpp:27:16: error: expected primary-expression before ‘int’
         vector<int> left, right;
                ^~~
prog.cpp:29:35: error: ‘left’ was not declared in this scope
             if(nums[i] < nums[0]) left.push_back(nums[i]);
                                   ^~~~
prog.cpp:30:18: error: ‘right’ was not declared in this scope
             else right.push_back(nums[i]);
                  ^~~~~
prog.cpp:34:34: error: ‘left’ was not declared in this scope
         long long left_res = dfs(left, mod) % mod;
                                  ^~~~
prog.cpp:34:40: error: ‘mod’ was not declared in this scope
         long long left_res = dfs(left, mod) % mod;
                                        ^~~
prog.cpp:35:35: error: ‘right’ was not declared in this scope
         long long right_res = dfs(right, mod) % mod;
                                   ^~~~~
prog.cpp:39:19: error: ‘table’ was not declared in this scope
         return (((table[n - 1][left_len] * left_res) % mod) * right_res) % mod;
                   ^~~~~
prog.cpp:39:19: note: suggested alternative: ‘mutable’
         return (((table[n - 1][left_len] * left_res) % mod) * right_res) % mod;
                   ^~~~~
                   mutable
stdout
Standard output is empty