Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <algorithm>#include <string>#include <string.h>#include <stdio.h>#include <math.h>#include <stdlib.h>#include <queue>#include <stack>#include <map>#include <set>#include <ctime>#include <cassert>using namespace std;const int N=200000+1000;vector<int>num[N<<2];int a[N];int dat[N];void build(int l,int r,int rt){if (l==r){num[rt].clear();num[rt].push_back(a[l]);return;}int m=(l+r)>>1;build(l,m,rt<<1);build(m+1,r,rt<<1|1);num[rt].resize(r-l+1);