我们只允许至多一次把一个子段 [l,r]
反转。逆序对只与相对顺序有关。把 [l,r]
反转时:
设区间长度为 k = r-l+1
,区间内
invSeg
:大于对数(ai > aj
);给定一个长度为 n 的整数数组 a={a1,a2,...,an}。你可以进行至多一次操作:选择一个区间 [l,r] 并将该区间内的元素顺序反转;也可以不进行任何操作。
记逆序对为满足 1≤i<j≤n 且 ai>aj 的有序对数量(相等不计入逆序)。
请你在允许至多一次区间反转的前提下,使逆序对数量尽可能小,并输出该最小值。
第一行输入一个整数 n(1≦n≦2×103) ;
第二行输入 n 个整数 a1,a2,...,an(1≦ai≦109) 。
输出一个整数,表示在至多一次区间反转后,数组可能达到的最小逆序对数量。
输入
5
2 1 5 3 4
输出
2
说明
选择反转区间 [1,2] ,得到 [1,2,5,3,4] ,逆序对为 (5,3),(5,4) ,数量为 2 。