记录编号 125832 评测结果 AAAAAAAAAA
题目名称 数列 最终得分 100
用户昵称 Gravatarztx 是否通过 通过
代码语言 C++ 运行时间 0.025 s
提交时间 2014-10-10 08:25:15 内存使用 0.92 MiB
显示代码纯文本
/*
	author	:hzoi_ztx
	title	:cogs 859 数列 
	ALG		:树状数组 
	comment	: 
*/
#include <cstdio>
#include <cstring>

#define  maxn  50010
#define  maxm  32770

typedef long long ll ;

int n ;
ll ans = 0 ;
int A[maxn] = {0} ;
int L[maxn] = {0} ;
ll C[maxm] = {0} ;

inline int lowbit(int x) { return x&(-x) ; }

inline ll sum(int p) {
	ll ret = 0 ; p ++ ;
	while (p > 0) { ret += C[p] ; p -= lowbit(p) ; } ;
	return ret ;
}

inline void add(int p) {
	p ++ ; while (p <= maxm) { C[p] ++ ; p += lowbit(p) ; } ;
}

int main() {
	#define READ
	#ifdef  READ
		freopen("queueb.in" ,"r",stdin ) ;
		freopen("queueb.out","w",stdout) ;
	#endif
	scanf("%d", &n ) ; int i ;
	for (i = 0 ; i < n ; i ++ ) scanf("%d", &A[i] ) ;
	for (i = 0 ; i < n ; i ++ ) L[i] = sum(A[i]-1) , add(A[i]) ;
	memset(C , 0 , sizeof (C)) ;
	for (i = n-1 ; i >= 0 ; i -- ) ans += L[i]*sum(A[i]-1) , add(A[i]) ;
	printf("%lld", ans ) ;
	return 0 ;
}