题意:对一个1~n的全排列, 进行m次局部排序
(0, l, r)将区间[l, r]数字升序排列
(1, l, r)将区间[l, r]数字降序排列
(0, l, r)将区间[l, r]数字升序排列
(1, l, r)将区间[l, r]数字降序排列
仅一次询问, 询问m次局部排序后第q位置上的数字
1 ≤ n, m, q ≤ 1e5
思路:
这题有个神奇的做法,我们可以直接二分答案x,然后把大于等于x的都看作1,比x小的都看作0插入线段树中,
然后执行m个询问,因为数组中要么是0,要么是1,所以区间排序就简单多了,只要求出区间1的个数,然后把这些1如
果升序放到后面,如果降序放到前面。执行完操作后看下q位置是0还是1即可,如果是1就说明比x大,反之比x小。
时间复杂度O(m log^2(n))
当然还有个麻烦点的做法,但是可以支持在线多次询问。(还没实现)