オフラインなのでMo's algorithmが適用できる。つまり、平衡二分木(あるいはセグメント木+座標圧縮)などを用意して、区間[l,r]を[l,r+1]に伸ばすときはdp[Xr+1]+=Xr+1と更新して、[l,r]を[l,r−1]に縮めるときはdp[Xr]−=Xrとすればよい。[l,r]から[l−1,r]、[l,r]から[l+1,r]なども同様である。それぞれのクエリについてmaxdpが答えになっている。O(NQlogN)。
平衡二分木を使ったらTLEしてしばらく放置していたが、よく考えると全体のmaxにしか興味がないので(優先度の変更可能な)優先度付きキューを使えば十分なのを思い出した。えびちゃんさんの記事にやり方が載っているので、書いたら通った。