记录编号 |
437984 |
评测结果 |
AAAAAAAAAA |
题目名称 |
数列 |
最终得分 |
100 |
用户昵称 |
Hzoi_Mafia |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2017-08-15 06:23:14 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
inline int read(){
int sum(0);
char ch(getchar());
for(;ch<'0'||ch>'9';ch=getchar());
for(;ch>='0'&&ch<='9';sum=sum*10+(ch^48),ch=getchar());
return sum;
}
int mxw;
int tr[35005];
inline int lowbit(int x){
return x&-x;
}
inline void update(int pos,int x){
while(pos<=mxw){
tr[pos]+=x;
pos+=lowbit(pos);
}
}
inline int sum(int pos){
int ret(0);
while(pos>0){
ret+=tr[pos];
pos-=lowbit(pos);
}
return ret;
}
int n;
int a[50005],l[50005],r[50005];
typedef long long L;
inline int gg(){
freopen("queueb.in","r",stdin);
freopen("queueb.out","w",stdout);
n=read();
for(int i=1;i<=n;++i)
a[i]=read()+1,mxw=max(mxw,a[i]);
for(int i=1;i<=n;++i){
l[i]=sum(a[i]-1);
update(a[i],1);
}
memset(tr,0,sizeof(tr));
for(int i=n;i>0;--i){
r[i]=sum(a[i]-1);
update(a[i],1);
}
L ans(0);
for(int i=1;i<=n;++i)
ans+=(L)l[i]*(L)r[i];
printf("%lld",ans);
return 0;
}
int K(gg());
int main(){;}