最近,小S对冒泡排序产生了浓厚的兴趣。为了问题简单,小 S 只研究对
下面是对冒泡排序的算法描述。
input:一个长度为 n 的排列 p[1...n]
output:p排序后的结果。
for i = 1 to n do
for j = 1 to n - 1 do
if(p[j] > p[j + 1])
交换 p[j] 与 p[j + 1] 的值
冒泡排序的交换次数被定义为交换过程的执行次数。可以证明交换次数的一个下界是
题目描述
小S开始专注于研究长度为
小S想要对于一个给定的长度为
输入格式
从标准输入读入数据。
输入第一行包含一个正整数
对于每组数据,第一行有一个正整数
接下来一行会输入
需要注意的是,在官方测试数据中,存在
输出格式
输出到标准输出。
输出共
对于每组数据,输出一个整数,表示字典序严格大于
样例一
input
1 3 1 3 2
output
3
解释
字典序比
样例二
input
1 4 1 4 2 3
output
9
样例三
见下载目录下的 ex_3.in 与 ex_3.ans。
子任务
下面是对本题每个测试点的input规模的说明。
对于所有数据,均满足
记
测试点 | 特殊性质 | ||
---|---|---|---|
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | |||
14 | |||
15 | |||
16 | |||
17 | |||
18 | |||
19 | |||
20 | |||
21 | |||
22 | |||
23 | |||
24 | |||
25 |
时间限制:
空间限制:
提示
下面是对交换次数下界是
排序本质上就是数字的移动,因此排序的交换次数应当可以用数字移动的总距离来描述。对于第
并不是所有的排列都达到了下界,比如在