最小逆序对
时间限制:1秒 内存限制:256M
【题目描述】
逆序数的定义如下:对于一个包含 \(n\) 个不同数字的序列 \(a_1, a_2, \dots, a_n\),如果存在下标 \(i < j\) 且 \(a_i > a_j\),则称 \((a_i, a_j)\) 为一个逆序对。序列的逆序数定义为逆序对的总数。例如,序列 3 1 4 2 的逆序对有 (3,1), (3,2), (4,2),因此逆序数为 3。
现在给出一个序列 \(a_1, a_2, \dots, a_n\),其中 \(n \leq 200000\),且序列中的数字是 \(0\) 到 \(n-1\) 的一个排列。你可以进行以下操作:将序列的第一个元素移到序列的末尾,得到一个新的序列。例如,对于序列 \(a_1, a_2, ..., a_n\),操作后得到 \(a_2, a_3, ..., a_n, a_1\)。
你需要求出:在所有可能的序列中(包括原始序列以及通过若干次上述操作得到的序列),最小的逆序数是多少。
【输入格式】
第一行是一个整数 \(n(n \leq 200000)\)。
第二行包含 \(n\) 个整数,表示序列 \(a_1, a_2, \dots, a_n\),保证是 \(0\) 到 \(n-1\) 的一个排列。
【输出格式】
输出一行,包含一个整数,表示最小的逆序数。
【输入输出样例1】
Input
10
1 3 6 9 0 8 5 7 4 2
Output
16
【数据限制】
对于 \(100\%\) 的数据,\(1 ≤ n ≤ 200000\)。
【来源】
Mr.he**