Lang:G++
Edit12345678910111213141516171819202122#include<cstdio>#include<cstring>long long s;int i,k,n,a[100001],b[100000];void mer(int L,int R){if(L>=R)return;int mid=L+R>>1,i=L,j=mid+1;for(mer(L,mid),mer(mid+1,R),k=0;i<=mid&&j<=R;)b[k++]=a[i]>a[j]?s+=mid-i+1,a[j++]:a[i++];for(;i<=mid;b[k++]=a[i++]);for(;j<=R;b[k++]=a[j++]);memcpy(a+L,b,k<<2);}int main(){scanf("%d",&n);for(i=1;i<=n;++i)scanf("%d",a+i);mer(1,n);printf("%lld",s);}