用线段树或分块对每个区间维护以下信息即可：

- 区间反转的 lazytag；
- 区间内 $\tt 1$ 的个数。
- 区间内逆序对的个数。

当反转区间 $I$ 时，设其长度为 $s$，后两个标记的值分别为 $x,y$：

- $x' \gets s-x$。
- $y' \gets \dfrac{1}{2}s(s-1)-\dfrac{1}{2}x(x-1)-\dfrac{1}{2}(s-x)(s-x-1)-y$。
  - $\dfrac{1}{2}s(s-1)$ 为总二元组个数。
  - $\dfrac{1}{2}x(x-1)$ 为反转前的 $(\tt 1,\tt 1)$ 二元组个数，反转后变为 $(\tt 0,\tt 0)$。
  - $\dfrac{1}{2}(s-x)(s-x-1)$ 为反转前的 $(\tt 0,\tt 0)$ 二元组个数，反转后变为 $(\tt 1,\tt 1)$。
  - $y$ 为反转前的 $(\tt 1,\tt 0)$ 二元组个数，反转后变为 $(\tt 0,\tt 1)$。
  - 从总数中减去上面三种不合法情况后，剩下的 $y'$ 就是合法情况。它表示反转前 $(\tt 0,\tt 1)$ 二元组个数，反转后变为 $(\tt 1,\tt 0)$。

当合并区间 $I_1,I_2$ 至区间 $I$ 时（$I_1$ 在前面），设其长度为 $s_1,s_2,s$，后两个标记的值分别为 $x_1,x_2,x,y_1,y_2,y$：

- $x \gets x_1 + x_2$。
- $y \gets y_1 + y_2 + x_1(s_2 - x_2)$。
  - $y_1$ 为 $I_1$ 中的逆序对个数。
  - $y_2$ 为 $I_2$ 中的逆序对个数。
  - $x_1(s_2 - x_2)$ 为跨越 $I_1,I_2$ 的逆序对个数，它一定由 $I_1$ 中的一个 $\tt 1$ 和 $I_2$ 中的一个 $\tt 0$ 组成，因此其数量等于 $I_1$ 中 $\tt 1$ 的个数乘上 $I_2$ 中 $\tt 0$ 的个数。
  - 这三种情况加起来，就是总的逆序对个数。
