各ポイント未満ポイント数とI、左右の統計とフェンウィックツリー[i]は、乗算と加算の原則の原則と、その後の回答
#pragma GCCの最適化(2) の#include <ビット/ STDC ++ H> に#defineっ長い長 の#define LS(I)I << 1個 の#define RS(I)I << 1 | 1 使用して 名前空間STDを、 CONSTの INT N = 1E5 + 10 。 LLビット[N]、LX [N]、RX [N]、[N]。 int型 lowbit(int型x)は、 { 返すのx&( - x)は、 } 無効アドオン(int型のx、int型のval) { 一方、(X < N) { ビット[X] + = ヴァル。 X + = lowbit(X)。 } } LLクエリ(int型x)は、 { LL ANS = 0 。 一方、(X> 0 ) { ANS + = ビット[X]。 X - = lowbit(X)。 } 返す歳; } INT のmain(){ int型のT。 CIN >> T; しばらく(T-- ) { int型のn; cinを >> N; 以下のために(int型 i = 1 ; iが<= N; iは++します) { CIN >> [i]は、 } memsetの(ビット、0、はsizeof (ビット))。 以下のために(int型 i = 1 ; iが<= N; iは++します) { LX [I] = クエリ([I])。 追加([I]を、1 )。 } memsetの(ビット、0、はsizeof (ビット))。 以下のために(int型 I = N; I> = 1 ; i-- ) { RX [i]は = クエリ([I])。 追加([I]を、1 )。 } LL ANS = 0 。 以下のために(int型 i = 1 ; iが<= N; iは++します) { ANS + = LX [I] *(NI-RX [i])と+(I-LX [I] - 1)* RX [i]は、 } coutの << ANS << " \ nを" ; } リターン 0 ; }