#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
const int M = 10100;
int a[M];
int main()
{
int n;
while(cin>>n)
{
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(i>1) //m==0时的inversion
{
int j=i-1;
while(j>=1) // 前面有多少个比它大的数字
{
if(a[j]>a[i])
{
sum++;
}
j--;
}
}
}
// n个数为0~n-1 a[i]移到尾巴后 初始时a[i]为首 a[i]之后比a[i]小的有 a[i]个 比a[i]大的有 n-1-a[i]
int ans=1<<20;
for(int k=1;k<=n-1;k++) //不断把a[k]放到最后
{
sum=sum-a[k]+(n-1-a[k]);//
ans=min(ans,sum);
}
cout<<ans<<endl;
}
return 0;
}
hdu 1384逆序数 暴力法
最新推荐文章于 2020-06-02 11:45:01 发布