解説

この問題はMo's algorithmとFenwick treeで解くことができます。

区間[L,R)[L,R)の転倒数が分かっている時、

  • R+1R+1と加える時、A[R]A[R]より大きい要素の数を答えに加える
  • R1R-1と削除する時、A[R]A[R]より大きい要素の数を答えから引く
  • L+1L+1と削除する時、A[L]A[L]より小さい要素の数を答えから引く
  • L1L-1と加える時、A[L]A[L]より小さい要素の数を答えに加える

これらの操作により答えが求まります。

計算量はMo's algorithmがO(NQ)O(N\sqrt{Q})、区間を広げる処理にO(logmax(Ai))O(\log{\max(A_i)})より、全体でO(NQlogmax(Ai))O(N\sqrt{Q} \log{ \max(A_i) })となります。

実装