题目大意.

给你一个排列 a,你要把它变成排列 b。你可以进行的是如下操作:【交换区间 [l,r] 内的最大值和最小值】。请在 3×105 步内完成这个目标。

n4000

由于操作是可逆的,我们可以把目标看作是要在 1.5×105 次操作内将一个特定排列排成 1n

枚举排序算法(?),现在让我们考虑一下归并排序。

假设原序列的前一半和后一半已经有序,那么如何归并?

key observation:我们可以反转一个有序序列。借由此,我们可以合并两个值域不交且内部有序的序列。

所以我们可以继续按值域分治:

(请注意,紫线应使得子问题大小(X 的元素个数、>X 的元素个数)尽量均衡。)

时间复杂度 O(nlog2n)