起因是前者能过,后者注释掉的会WA,想了很久死活想不出来为什么,然后发现题面写的数据区间无交,但是所有询问里都存在 r1≥l2,确定不是数据有问题吗。。
void Copy(int l1, int r1, int l2, int r2){
if(r1 >= l2)printf("*\n"), exit(0);
auto itR = Split(r1 + 1), itL = Split(l1);
basic_string < Node > tmp;
for(auto it = itL; it != itR; ++it)tmp += Node{it->l + (l2 - l1), it->r + (l2 - l1), it->val};
itR = Split(r2 + 1), itL = Split(l2);
tr.erase(itL, itR);
for(auto nod : tmp)Insert(nod);
//////////////////////
// auto itR = Split(r2 + 1), itL = Split(l2);
// tr.erase(itL, itR);
// itR = Split(r1 + 1), itL = Split(l1);
// basic_string < Node > tmp;
// for(auto it = itL; it != itR; ++it)tmp += Node{it->l + (l2 - l1), it->r + (l2 - l1), it->val};
// for(auto nod : tmp)Insert(nod);
///////////////////////
}