トピック(2)(神の民に最も近いです)
考え
このことは、逆問題の標準シーケンスである、あなたはマージソートを使用することができます。
コード
#include <iostreamの> する#include <cstdioを> する#include <CStringの> する#include <アルゴリズム> の#include <cmath> 使用して 名前空間STD。 長い 長い INT [ 500001 ]、R [ 500001 ]、ANS = 0 、N。 ボイド gsort(INT S、INT T) { もし、(S ==のT) リターン; INT半ば=(S + T)/ 2 。 gsort(S、ミッド)。 gsort(MID + 1 、T); int型 I = sで、J =ミッド+1、K =のS。 しながら、式(I =中間&& J <= < T) { 場合([i]が<= A [J]) { R [k]が = [I] I ++ ; K ++ ; } 他 { R [k]は = [j]を。 J ++ ; K ++ ; ANSの =のANS + +ミッドI 1 ; } } ながら(I <= MID) { R [K] =[I]。 I ++ ; K ++ ; } 一方、(J <= T) { R [k]は = [j]を。 J ++ ; K ++ ; } のために(int型 I = sで、I <= T; iが++ ) [I] = R [i]は、 } int型のmain() { CIN >> N。 以下のために(int型 i = 1 ; iが= <N; iは++ ) CIN >> [I]。 gsort(1、N)。 coutの << ANS << てendl; リターン 0 ; }