珂朵莉树
set<re>::iterator split(int x) { auto it=S.upper_bound({x}); it--; int l=it->l,r=it->r,k=it->k; if (it->l!=x) { S.erase(it); S.insert({l,x-1,k}); return S.insert({x,r,k}).first; } return it; } ll ans[N]; int get_c(int x) { auto it=S.upper_bound({x}); it--; return it->k; } set<re>::iterator gao(int x) { auto it=S.upper_bound({x}); it--; while (1) { auto it2=next(it); if (it2!=S.end()&&it2->k==it->k) { int r=it2->r; S.erase(it2); it->r=r; } else break; } while (it!=S.begin()) { auto it2=prev(it); if (it2->k==it->k) { int l=it2->l; S.erase(it2); it->l=l; } else break; } return it; }