トピック:
列の数の逆演算、ください数整数シーケンス番号の長さnを与えられ。
逆ペアは次のように定義された:i <jおよび[I]>の逆である[j]を、満たしている場合、i番目および列番号のj番目の要素のため、それ以外の場合ではありません。
入力形式
最初の行は、整数nを含むシーケンスの長さです。
第二行は、列の全体の数を表す整数N含有します。
出力フォーマット
出力逆順の数を表す整数。
データ範囲
1 ≤ N ≤ 100000 1≤n≤100000
サンプル入力:
6
2 3 4 5 6 1
出力例:
5
コード:
1の#include <iostreamの> 2の#include <アルゴリズム> 3 使用して 名前空間をSTD。 4 5 CONST INT = N 1E7。 6 7 長いARR [N]。 8 長いヘルプ[N]。 9 INT N。 10の 11 長い 長ANS。 12 13 空隙 union_sort(int型 L、INT R){ 14 場合(L> = R)リターン; 15 int型ミッド= L + R >> 1 。 16 union_sort(L、MID)。 17 union_sort(MID + 1 、R)。 18 INT iは= L、J =ミッド+ 1、k = 1 。 19 一方(I <=ミッド&& J <= {r)が 20 であれば(ARR [I] <= ARR [J]) 21 の助け[K ++] = ARR [I ++ ]。 22 他{ 23 ヘルプ[K ++] = ARR [J ++ ]。 24の ANS + =ミッド- I + 1 。 25 } 26 } 27 ながら(I <= MID)ヘルプ[K ++] = ARR [I ++ ]。 28 一方(J <= R)ヘルプ[K ++] = ARR [J ++ ]。 29 のために(INT iは= L、J = 1 ; I <= R; ++ I) 30 ARR [I] =ヘルプ[J ++ ]。 31 } 32 33 INT メイン(){ 34 CIN >> N。 35 のために(INT iは= 1 ; iが<= N; ++ I)CIN >> ARR [I]。 36 union_sort(1 、N) 37 COUT << ANS。 38 リターン 0 ; 39 }