RT,该操作为区间取 max
void change(int o, int l, int r, int s, int t, pair<int,int> x) {
if(l>=s&&r<=t) {
if(x>c[o]) c[o]=mp[o]=x;
mp[o]=c[o];//为什么要写这一行?
return;
}
int mid=(l+r)>>1; chuan(o, l, r);
if(s<=mid) change(o*2, l, mid, s, t, x);
if(t>mid) change(o*2+1, mid+1, r, s, t, x);
c[o]=max(c[o*2], c[o*2+1]);
}
我昨晚 CF 的 D 就挂这里了……