並べ替えた後の数列 B において Bi=Ax,Bi+1=Ay となり、答えに ∣Ax−Ay∣ が寄与する回数を主客転倒の考え方を用いて求めていきます。
- まず x,y を 1≤x,y≤N を満たすように選んで固定します。
- i は 1≤i≤N−1 を満たすように自由に選べるので常に N−1 通りあります。
- Ax,Ay 以外の要素はどのように並んでいてもよいので (N−2)! 通りあります。
以上より (N−1)!1≤x,y≤N∑∣Ax−Ay∣ が答えになります。これを愚直に求めると O(N2) になるので間に合います。
なお、A が昇順ソートされている場合は
1≤x,y≤N∑∣Ax−Ay∣=2y=1∑Nx=1∑y(Ay−Ax)=2y=1∑N(yAy−x=1∑yAx)
となります。よって A をソートし x=1∑yAx の部分を累積和で前計算してからこの式に従って求めると O(NlogN) で解くことも可能です。