珂朵莉树维护区间
记得赋初值
struct ODT {
::map <int, int> mp;
int get(int x) {
return prev(mp.upper_bound(x))->se;
}
auto split(int x) {
return mp.insert(make_pair(x, get(x))).fi;
}
void assign(int l, int r, int v) {
auto il(split(l)), ir(split(r + 1));
mp.erase(next(il), ir);
il->second = v;
}
} odt;