最近,小 Z 对冒泡排序产生了浓厚的兴趣。
下面是冒泡排序的伪代码:
输入: 一个长度为 n 的序列 a[1...n]
输出: a 从小到大排序后的结果
for i = 1 to n do:
for j = 1 to n - 1 do
if (a[j] > a[j + 1])
交换 a[j] 与 a[j + 1] 的值
冒泡排序的交换次数被定义为在排序时进行交换的次数,也就是上面冒泡排序伪代码第六行的执行次数。他希望找到一个交换次数尽量少的序列。
题目描述
小 Z 所研究的序列均由非负整数构成。它的长度为
他知道冒泡排序时常会超时。所以,他想要知道,在所有满足附加条件的序列中,进行冒泡排序的交换次数的最少值是多少。
输入格式
本题有多组数据。
输入的第一行包含一个正整数
对于每组数据,第一行包含两个正整数
接下来
输出格式
输出共
对于每组数据,如果存在满足这 -1
。
样例一
input
1
3 2
1 1 2022
2 3 39
output
1
explanation
这组数据的约束条件为
若
若
若
若
因此,交换次数的最小值为
样例二
见附件下载。
样例三
见附件下载。
这个样例满足测试点
样例四
见附件下载。
这个样例满足测试点
样例五
见附件下载。
这个样例满足测试点
样例六
见附件下载。
这个样例满足测试点
数据范围
本题共
其中
测试点 | 数据范围 | 特殊性质 |
---|---|---|
A | ||
B | ||
C | ||
A | ||
B | ||
C | ||
- 特殊性质 A:对于
, 。 - 特殊性质 B:对于
, 。 - 特殊性质 C:输入给出的
个区间 两两不相交。
时间限制:2s
空间限制:
提示
本题的部分测试点输入量较大。我们建议你使用较为快速的读入方式。