Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>using namespace std;const int N = 100001;int value[N];struct TreeNode{int sum;int left, right;TreeNode *lchild, *rchild;int set, add;TreeNode(int _left, int _right): left(_left), right(_right),set(-1), add(0) , lchild(NULL), rchild(NULL){}};TreeNode *Build(int left, int right){TreeNode *root = new TreeNode(left, right);if (left == right)root -> sum = value[left];else{int mid = (left + right) / 2;root -> lchild = Build(left, mid);root -> rchild = Build(mid + 1, right);root -> sum = root -> lchild -> sum + root -> rchild -> sum;}return root;}void release(TreeNode *root){if (root -> right > root -> left){