/*分析:a[0]的逆序數為0,a[0]後邊有a[0]個比a[0]小的數,將a[0]移到末尾是,a[0]的逆序數變成n-1-a[0];
而a[0]個比a[0]小的數的逆序數都減1,設原序列的逆序數為sum,則新序列的逆序數sum=sum-a[0]+n-1-a[0];
當m>1時,sum=sum(m-1)+n-1-a[0]-a[0];a[0]是m-1次移動後序列的首元素。
*/
[cpp] #include<stdio.h>
#define inf 0x3fffffff
int a[5010];
int main()
{
int n,i,j,sum,min;
while(scanf("%d",&n)!=-1)
{
sum=0;
scanf("%d",&a[0]);
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
j=i-1;
while(j>=0)
{
if(a[j--]>a[i])
sum++;
}
}
min=inf;
for(i=0;i<n-1;i++)
{
sum=sum+(n-a[i]-1)-a[i];
if(min>sum)
min=sum;
}
printf("%d\n",min);
}
return 0;
}
#include<stdio.h>
#define inf 0x3fffffff
int a[5010];
int main()
{
int n,i,j,sum,min;
while(scanf("%d",&n)!=-1)
{
sum=0;
scanf("%d",&a[0]);
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
j=i-1;
while(j>=0)
{
if(a[j--]>a[i])
sum++;
}
}
min=inf;
for(i=0;i<n-1;i++)
{
sum=sum+(n-a[i]-1)-a[i];
if(min>sum)
min=sum;
}
printf("%d\n",min);
}
return 0;
}