#include <algorithm>
#include<iostream>
using namespace std;
long long n=0;
int ang[100000]={0}; //swap次数
long long heigt[100000]={0};//身高数组
long long sum=0;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>heigt[i];
}
//初始化身高数组
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
{
if(heigt[i]>heigt[j])
{
ang[i]++;
ang[j]++;
}
}//寻找逆序对
//标记好交换次数
for(int i=0;i<n;i++)
{
sum=sum+(ang[i]+1)*ang[i]/2;//累加
}
cout<<sum;
return 0;
}
原文:http://www.cnblogs.com/sundy-lee/p/4377402.html