#P1034. [Atcoder ABC 476 E] Min-Max Swap

[Atcoder ABC 476 E] Min-Max Swap

题目描述

给定一个长度为 NN 的排列 P=(P1,P2,,PN)P = (P_1, P_2, \ldots, P_N),以及 MM 次操作。

每次操作给定两个整数 Li,RiL_i, R_i1LiRiN1 \le L_i \le R_i \le N)。在每次操作中,你需要:

  1. 找出区间 P[LiRi]P[L_i \ldots R_i] 中的最大值所在的位置 pmaxp_{\max},以及最小值所在的位置 pminp_{\min}
  2. 交换 P[pmax]P[p_{\max}]P[pmin]P[p_{\min}]

请输出经过全部 MM 次操作后的最终排列 PP

输入格式

输入从标准输入中给出,格式如下:

NN MM
P1P_1 P2P_2 \ldots PNP_N
L1L_1 R1R_1
L2L_2 R2R_2
\vdots
LML_M RMR_M

输出格式

输出一行,包含 NN 个整数,表示最终的排列 PP,两两之间用空格隔开。

数据范围

  • 1N2×1051 \le N \le 2 \times 10^5
  • 1M2×1051 \le M \le 2 \times 10^5
  • PP(1,2,,N)(1, 2, \ldots, N) 的一个排列。
  • 1LiRiN1 \le L_i \le R_i \le N
  • 所有输入的值均为整数。

样例

样例输入 1

5 3
3 1 4 2 5
1 3
2 5
1 5

样例输出 1

1 2 4 3 5

样例解释 1

  • 初始时 P=(3,1,4,2,5)P = (3, 1, 4, 2, 5)
  • 第 1 次操作区间 [1,3][1, 3]:最大值为 44(位置 3),最小值为 11(位置 2)。交换后 P=(3,4,1,2,5)P = (3, 4, 1, 2, 5)
  • 第 2 次操作区间 [2,5][2, 5]:最大值为 55(位置 5),最小值为 11(位置 3)。交换后 P=(3,4,5,2,1)P = (3, 4, 5, 2, 1)
  • 第 3 次操作区间 [1,5][1, 5]:最大值为 55(位置 3),最小值为 11(位置 5)。交换后 P=(3,4,1,2,5)P = (3, 4, 1, 2, 5)
  • 最终结果输出 1 2 4 3 5

样例输入 2

1 1
1
1 1

样例输出 2

1

样例输入 3

6 4
6 5 4 3 2 1
1 6
2 5
3 4
1 6

样例输出 3

6 2 3 4 5 1