#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 100010;
int n;
int a[N],tmp[N];
long long merge_sort (int a[],int l,int r)
{ 
    if (l==r)
		return 0;
    int mid=l+r>>1;
    long long ans=merge_sort(a,l,mid)+merge_sort(a,mid+1,r);
    int i=l,j=mid+1,k=1;
    while(i<=mid&&j<=r)
	{
        if(a[i]<=a[j])
			tmp[k++]=a[i++];
        else
			tmp[k++]=a[j++],ans+=mid-i+1;
    }
    while(i<=mid)
		tmp[k++]=a[i++];
    while(j<=r)
		tmp[k++]=a[j++];
    for(int i=1,j=l;j<=r;i++,j++)
		a[j]=tmp[i];
    return ans;
}
 signed main () {
    cin >> n;
    for(int i=1;i<=n;i++)
		cin >> a[i];
    cout << merge_sort(a,1,n) << endl;
    return 0;
}

0 条评论

目前还没有评论...

信息

ID
2294
时间
1000ms
内存
256MiB
难度
7
标签
递交数
157
已通过
36
上传者