#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
long long n,a[500005],t[500005];
long long ans;
void gb(int l,int r)
{
if(l==r)return;
int mid=(l+r)/2;
if(l<=mid)gb(l,mid);
if(mid<=r)gb(mid+1,r);
int i=l,j=mid+1,k=l;
while(i<=mid&&j<=r)
{
if(a[i]>a[j])
{
t[k++]=a[j++];
ans+=mid-i+1;
}
else
{
t[k++]=a[i++];
}
}
while(i<=mid)t[k++]=a[i++];
while(j<=r)t[k++]=a[j++];
for(i=l;i<=r;i++)a[i]=t[i];
}
int main()
{
freopen("sophist.in","r",stdin);
freopen("sophist.out","w",stdout);
int i,j;
scanf("%lld",&n);
for(i=1;i<=n;i++)scanf("%lld",&a[i]);
gb(1,n);
printf("%lld\n",ans);
/*for(i=1;i<=n;i++)
{
printf("%d ",a[i]);
}*/
return 0;
}
10.7 T1
最新推荐文章于 2023-10-07 19:58:14 发布