数列 $A = \{a_0, a_1, ... a_{n-1}\}$ について、$a_i > a_j$ かつ $i < j$ である組 $(i, j)$ の個数を反転数と言います。反転数は次のバブルソートの交換回数と等しくなります。
bubbleSort(A) cnt = 0 // 反転数 for i = 0 to A.length-1 for j = A.length-1 downto i+1 if A[j] < A[j-1] swap(A[j], A[j-1]) cnt++ return cnt
数列 $A$ が与えられるので、$A$ の反転数を求めてください。上の疑似コードのアルゴリズムをそのまま実装するとTime Limit Exceeded になることに注意してください。
1行目に数列 $A$ の長さ $n$ が与えられます。2行目に $a_i (i = 0, 1, .. n-1)$ が空白区切りで与えられます。
反転数を1行に出力してください。
5 3 5 2 1 4
6
3 3 1 2
2