暴力过.....
题意是,给一个长度为n的序列(n<=5000),由0~n-1的数字组成。每次把最左边的数挪到最右边形成一个新的序列。那么一共可以形成n个序列。求这n个序列里面最小的逆序数是多少
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 50001
int n,a[MAX];
int main (){
int i, j, MIN, sum ;
while(scanf("%d", &n) != EOF )
{
sum = 0 ;
for(i = 0; i < n; i ++)
{
scanf("%d", &a[i]);
for(j = 0; j < i; j ++)
{
if(a[j] > a[i]) sum ++ ;
}
}
MIN = sum ;
for(i = 0; i < n-1; i ++){
sum = sum - a[i] + (n - a[i] - 1) ;
if(sum < MIN) MIN = sum ;
}
printf("%d\n", MIN);
}
return 0 ;
}