提交时间:2024-03-14 22:25:00

运行 ID: 138286

# include<iostream> # include<cstring> using namespace std ; int n ; long long a [100001] , f [1000001] , sum [100001] ; int lwb ( int n ) { return n & -n ; } void md ( int id ) { while ( id <= 1e6 ) { f [id] ++ ; id += lwb ( id ) ; } return ; } int gt ( int id ) { int ans = 0 ; while ( id > 0 ) { ans += f [id] ; id -= lwb ( id ) ; } return ans ; } int main ( ) { cin >> n ; for( int i = 1 ; i <= n ; i ++ ) { cin >> a [i] ; a [i] ++ ; md ( a [i] ) ; sum [i] = i - gt ( a [i] ) ; } memset ( f , 0 , sizeof ( f ) ) ; for ( int i = n ; i >= 1 ; i -- ) { md ( a [i] ) ; sum [i] += gt ( a [i] - 1 ) ; } long long ans = 0 ; for ( int i = 1 ; i <= n ; i ++ ) { ans += ( 1 + sum [i] ) * sum [i] / 2 ; } cout << ans << endl ; return 0 ; }