题目描述
给定一个数字序列 a1,a2,⋯,an 的逆序对是满足 i<j 且 ai>aj 的对数。
对于给定的数字序列 a1,a2,⋯,an ,如果我们将前 m 个数字移动到序列的末尾(m≥0),我们将得到另一个序列。共有 n 种这样的序列,如下所示:
a1,a2,⋯,an−1,an(其中 m=0 为初始序列)
a2,a3,⋯,an,a1(其中 m=1)
a3,a4,⋯,a1,a2(其中 m=2)
⋯
an,a1,⋯,an−2,an−1(其中 m=n−1)
请编写一个程序,找出上述序列中逆序对数量最小的那个。
输入格式
每个用例包括两行:第一行包含一个正整数 n;
接下来一行包含从 0 到 n−1 的 n 个整数的排列。
输出格式
对于每个用例,输出一个单独的行,包含逆序数最小的值。
10
2 1 3 6 9 0 8 5 7 4
16
样例分析
数列 {1,3,6,9,0,8,5,7,4,2} 的逆序对数量是 22;
数列 {3,6,9,0,8,5,7,4,2,1} 的逆序对数量是 29;
数列 {6,9,0,8,5,7,4,2,1,3} 的逆序对数量是 32;
数列 {9,0,8,5,7,4,2,1,3,6} 的逆序对数量是 20;
数列 {0,8,5,7,4,2,1,3,6,9} 的逆序对数量是 20;
数列 {8,5,7,4,2,1,3,6,9,0} 的逆序对数量是 29;
数列 {5,7,4,2,1,3,6,9,0,8} 的逆序对数量是 22;
数列 {7,4,2,1,3,6,9,0,8,5} 的逆序对数量是 21;
数列 {4,2,1,3,6,9,0,8,5,7} 的逆序对数量是 16;
数列 {2,1,3,6,9,0,8,5,7,4} 的逆序对数量是 17;
数据范围与提示
对于 100% 数据:1≤n≤5×103。