比赛 20120709 评测结果 AAAAAAAAAA
题目名称 数列 最终得分 100
用户昵称 Czb。 运行时间 0.040 s
代码语言 C++ 内存使用 1.05 MiB
提交时间 2012-07-09 11:19:28
显示代码纯文本
#include<stdio.h>
#include<string.h>

//#define windows

#ifdef windows
#define lld %I64d
#endif

typedef long long Int;

int n,a[50001],s[50001];

Int ans,f[50001];

inline int low(int a)
{
	return a&(-a);
}

void Add(int i)
{
    for(;i<=32768;i+=low(i))
        s[i]++;
}

Int Sum(int k)
{
    Int S=0;
    for(int i=k;i>0;i-=low(i))
        S+=s[i];
    return S;
}

int main()
{
	freopen("queueb.in","r",stdin);
	freopen("queueb.out","w",stdout);
	int i;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		a[i]++;
		f[i]=Sum(a[i]-1);
		Add(a[i]);
	}
	memset(s,0,sizeof(s));
	for(i=n;i>0;i--)
	{
		ans+=f[i]*Sum(a[i]-1);
		Add(a[i]);
	}
	printf("%lld\n",ans);
	return 0;
}