题目描述
给定一个 (1,2,…,N) 的排列 P=(P1,P2,…,PN),以及长度为 M 的整数序列 L=(L1,L2,…,LM) 与 R=(R1,R2,…,RM)。
对这个排列 P,按 i=1,2,…,M 的顺序依次执行以下操作:
- 将 PLi,PLi+1,…,PRi 中值最小的元素与值最大的元素的位置互换。
求执行完 M 次操作后的排列 P 的各个元素。
输入格式
输入按以下格式从标准输入读入:
- N M
- P1 P2 … PN
- L1 R1
- L2 R2
- ⋮
- LM RM
输出格式
将执行完 M 次操作后的排列 P 的各个元素,从前到后以空格分隔,输出在一行。
5 3
3 1 4 2 5
1 3
1 5
1 4
3 4 2 5 1
初始时,P=(3,1,4,2,5)。
- i=1 时:在 P1,P2,P3 中,值最小的是 P2,值最大的是 P3。交换 P2 与 P3 后得到 P=(3,4,1,2,5)。
- i=2 时:在 P1,P2,P3,P4,P5 中,值最小的是 P3,值最大的是 P5。交换 P3 与 P5 后得到 P=(3,4,5,2,1)。
- i=3 时:在 P1,P2,P3,P4 中,值最小的是 P4,值最大的是 P3。交换 P3 与 P4 后得到 P=(3,4,2,5,1)。
三次操作结束后,P=(3,4,2,5,1)。
6 7
3 6 5 2 4 1
4 5
2 3
3 5
4 6
3 4
1 6
3 5
3 5 4 6 2 1
数据范围
-
2≤N≤2×105
-
1≤M≤2×105
-
P 是 (1,2,…,N) 的排列。
-
1≤Li<Ri≤N
-
所有输入值均为整数。
-
来源:AtCoder ABC 476 E
子任务设置
- 子任务 1(30 分):N,M≤2000。
- 子任务 2(30 分):N≤2×105 且 M≤2000。
- 子任务 3(40 分):无特殊限制。