#abc474c. Remove and Append

    ID: 4403 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 3 Uploaded By: Tags>普及/提高-时间戳离线处理模拟

Remove and Append

题目描述

给定 (1,2,,N)(1, 2, \ldots, N) 的一个排列 P=(P1,P2,,PN)P = (P_1, P_2, \ldots, P_N)

q=1,2,,Qq = 1, 2, \ldots, Q 的顺序执行下面的操作:

  • PP 中值为 aqa_q 的那个元素删除,并把它追加到 PP 的末尾

请求出执行完 QQ 次操作后 PP 的各个元素的值。

输入格式

N Q
P_1 P_2 ... P_N
a_1
a_2
...
a_Q

输出格式

在一行中输出执行完 QQ 次操作后的 P1,P2,,PNP_1, P_2, \ldots, P_N,相邻两数之间用一个空格隔开。

输入示例 1

4 2
2 4 3 1
3
2

输出示例 1

4 1 3 2

示例 1 说明

初始时 P=(2,4,3,1)P = (2, 4, 3, 1)

  • 11 次操作把值 33 移到末尾,得到 P=(2,4,1,3)P = (2, 4, 1, 3)
  • 22 次操作把值 22 移到末尾,得到 P=(4,1,3,2)P = (4, 1, 3, 2)

输入示例 2

3 3
1 2 3
1
1
1

输出示例 2

2 3 1

示例 2 说明

同一个值可以被反复操作。这里连续三次都移动值 11(1,2,3)(2,3,1)(2,3,1)(2,3,1)(1,2,3) \to (2,3,1) \to (2,3,1) \to (2,3,1)。第 2233 次操作时 11 已经在末尾,移动之后位置不变。

这说明只有每个值的最后一次操作才真正决定它的最终位置

输入示例 3

2 5
2 1
1
1
2
2
1

输出示例 3

2 1

示例 3 说明

NN 只有 22,但操作了 55 次,两个值交替被移到末尾。最终 11 的最后一次操作在第 55 次、22 的在第 44 次,所以 22 排在 11 前面,答案是 2 1——恰好与初始排列相同。

这组数据用来提醒:QQ 可以远大于 NN,被操作过的值可能全部都是;此时初始排列的信息会被完全覆盖。

约束条件

  • 1N2×1051 \le N \le 2 \times 10^5
  • 1Q2×1051 \le Q \le 2 \times 10^5
  • (P1,P2,,PN)(P_1, P_2, \ldots, P_N)(1,2,,N)(1, 2, \ldots, N) 的排列
  • 1aqN1 \le a_q \le N
  • 所有输入值均为整数