思路:
把数组排序,那么其中连续的一段一定是树里边一颗子树
那么我们把那一段最先插入的点找出来最为子树的根,然后分成两颗树继续往下递归
具体查最先插入方法用ST表就可以了
c o d e code code
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
long long n;
long long dep[301000], f[301010][32], b[301010];
struct node
{
long long x, id;
}a[