记录编号 | 437984 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 数列 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | 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(){;}