fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. template<class S, class T> inline S min_L(S a,T b){
  5. return a<=b?a:b;
  6. }
  7. template<class S, class T> inline S max_L(S a,T b){
  8. return a>=b?a:b;
  9. }
  10. template<class S, class T> inline S chmax(S &a, T b){
  11. if(a<b){
  12. a=b;
  13. }
  14. return a;
  15. }
  16. #define main dummy_main
  17. int main(){
  18. return 0;
  19. }
  20. #undef main
  21. #define TreeNode dummy_TreeNode
  22. struct TreeNode{
  23. int val;
  24. TreeNode *left;
  25. TreeNode *right;
  26. TreeNode(int x) : val(x), left(NULL), right(NULL){
  27. }
  28. }
  29. ;
  30. #undef TreeNode
  31. long long res;
  32. void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
  33. int mn1;
  34. int mx1;
  35. int ok1;
  36. long long sm1;
  37. int mn2;
  38. int mx2;
  39. int ok2;
  40. long long sm2;
  41. if(n == NULL){
  42. mn = 1073709056;
  43. mx = -1073709056;
  44. ok = 1;
  45. sm = 0;
  46. return;
  47. }
  48. solve(n->left, mn1, mx1, ok1, sm1);
  49. solve(n->right, mn2, mx2, ok2, sm2);
  50. mn =min_L(min_L(mn1, mn2), n->val);
  51. mx =max_L(max_L(mx1, mx2), n->val);
  52. ok = (ok1 && ok2);
  53. if(mx1 >= n->val){
  54. ok = 0;
  55. }
  56. if(mn2 <= n->val){
  57. ok = 0;
  58. }
  59. sm = sm1 + sm2 + n->val;
  60. if(ok){
  61. chmax(res, sm);
  62. }
  63. }
  64. class Solution{
  65. public:
  66. int maxSumBST(TreeNode* root){
  67. int mn;
  68. int mx;
  69. int ok;
  70. long long sm;
  71. res = 0;
  72. solve(root, mn, mx, ok, sm);
  73. return res;
  74. }
  75. }
  76. ;
  77. // cLay varsion 20200308-1
  78.  
  79. // --- original code ---
  80. // #define main dummy_main
  81. // {}
  82. // #undef main
  83. //
  84. // #define TreeNode dummy_TreeNode
  85. // struct TreeNode {
  86. // int val;
  87. // TreeNode *left;
  88. // TreeNode *right;
  89. // TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  90. // };
  91. // #undef TreeNode
  92. //
  93. // ll res;
  94. //
  95. // void solve(TreeNode *n, int &mn, int &mx, int &ok, ll &sm){
  96. // int mn1, mx1, ok1; ll sm1;
  97. // int mn2, mx2, ok2; ll sm2;
  98. //
  99. // if(n == NULL){
  100. // mn = int_inf;
  101. // mx = -int_inf;
  102. // ok = 1;
  103. // sm = 0;
  104. // return;
  105. // }
  106. //
  107. // solve(n->left, mn1, mx1, ok1, sm1);
  108. // solve(n->right, mn2, mx2, ok2, sm2);
  109. //
  110. // mn = min(mn1, mn2, n->val);
  111. // mx = max(mx1, mx2, n->val);
  112. // ok = (ok1 && ok2);
  113. // if(mx1 >= n->val) ok = 0;
  114. // if(mn2 <= n->val) ok = 0;
  115. // sm = sm1 + sm2 + n->val;
  116. //
  117. // if(ok) res >?= sm;
  118. // }
  119. //
  120. // class Solution {
  121. // public:
  122. // int maxSumBST(TreeNode* root) {
  123. // int mn, mx, ok; ll sm;
  124. // res = 0;
  125. // solve(root, mn, mx, ok, sm);
  126. // return res;
  127. // }
  128. // };
  129.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:32:12: error: variable or field ‘solve’ declared void
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
            ^~~~~~~~
prog.cpp:32:12: error: ‘TreeNode’ was not declared in this scope
prog.cpp:32:12: note: suggested alternative: ‘remove’
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
            ^~~~~~~~
            remove
prog.cpp:32:22: error: ‘n’ was not declared in this scope
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
                      ^
prog.cpp:32:22: note: suggested alternative: ‘yn’
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
                      ^
                      yn
prog.cpp:32:25: error: expected primary-expression before ‘int’
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
                         ^~~
prog.cpp:32:34: error: expected primary-expression before ‘int’
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
                                  ^~~
prog.cpp:32:43: error: expected primary-expression before ‘int’
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
                                           ^~~
prog.cpp:32:52: error: expected primary-expression before ‘long’
 void solve(TreeNode *n, int &mn, int &mx, int &ok, long long &sm){
                                                    ^~~~
prog.cpp:66:17: error: ‘TreeNode’ has not been declared
   int maxSumBST(TreeNode* root){
                 ^~~~~~~~
prog.cpp: In member function ‘int Solution::maxSumBST(int*)’:
prog.cpp:72:5: error: ‘solve’ was not declared in this scope
     solve(root, mn, mx, ok, sm);
     ^~~~~
stdout
Standard output is empty