Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
138855 陈家宝 学生排队 C++ 通过 100 29 MS 9728 KB 772 2024-03-19 16:31:10

Tests(10/10):


#include<bits/stdc++.h> 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; return 0 ; }


测评信息: