Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
136580 mairuisheng 学生排队 C++ 通过 100 23 MS 9732 KB 665 2024-03-09 10:50:29

Tests(10/10):


#include<iostream> #include<cstring> using namespace std; int n; long long a[100001],f[1000001],sum[100001]; int lowbit(int n){ return n&-n; } void modi(int id){ while(id<=1e6){ f[id]++; id+=lowbit(id); } return ; } int get(int id){ int ans=0; while(id>0){ ans+=f[id]; id-=lowbit(id); } return ans; } int main(){ cin>>n; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); a[i]++; modi(a[i]); sum[i]=i-get(a[i]); } memset(f,0,sizeof(f)); for(int i=n;i>0;i--){ modi(a[i]); sum[i]+=get(a[i]-1); } long long ans=0; for(int i=1;i<=n;i++){ ans+=(1+sum[i])*sum[i]/2; } cout<<ans<<endl; return 0; }


测评信息: