#374. 冷热数据队列

冷热数据队列

题目描述

冷热数据队列 qq 可以看做由两个子队列组成:长度为 n1n_1 的热数据队列 q1q_1 和长度为 n2n_2 的冷数据队列 q2q_2。当我们需要访问某个数据页 pp 时:

  1. pp 不在队列 qq 中(即既不在 q1q_1 中,也不在 q2q_2 中),则加载数据页 pp,并插入到 q2q_2 的首部。
  2. pp 已经在队列 qq 中,则将 pp 移动至 q1q_1 首部。
  3. q1q_1q2q_2 队列容量不足时,会将其尾部的数据页淘汰出去。
  4. q1q_1 已满,但 q2q_2 未满时,从 q1q_1 中淘汰出的数据页会移动到 q2q_2 首部。

输入格式

输入的第一行包含两个正整数 n1,n2n_1, n_2,用一个空格分隔。

第二行包含一个整数 mm,表示操作次数。

第三行包含 mm 个正整数 v1,v2,,vmv_1, v_2, \cdots, v_m,表示依次访问到的数据页的编号,相邻整数之间使用一个空格分隔。

输出格式

输出两行。

第一行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q1q_1 中的数据页。

第二行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q2q_2 中的数据页。

样例

3 3
10
1 2 3 4 3 2 2 1 3 4
4 3 2
1

解释 #1

ii viv_i q1q_1 q2q_2
- - [][] [][]
11 11 [1][1]
22 22 [2,1][2,1]
33 33 [3,2,1][3,2,1]
44 44 [4,3,2][4,3,2]
55 33 [3][3] [4,2][4,2]
66 22 [2,3][2,3] [4][4]
77
88 11 [1,4][1,4]
99 33 [3,2][3,2]
1010 44 [4,3,2][4,3,2] [1][1]

数据范围

  • 对于 20%20\% 的评测用例,1n1,n2101 \leq n_1, n_2 \leq 101m101 \leq m \leq 10
  • 对于 40%40\% 的评测用例,1n1,n2201 \leq n_1, n_2 \leq 201m1001 \leq m \leq 100
  • 对于 60%60\% 的评测用例,1n1,n21001 \leq n_1, n_2 \leq 1001m10001 \leq m \leq 1000
  • 对于 80%80\% 的评测用例,1n1,n21031 \leq n_1, n_2 \leq 10^31m1041 \leq m \leq 10^4
  • 对于所有评测用例,1n1,n21041 \leq n_1, n_2 \leq 10^41m1051 \leq m \leq 10^50vi1040 \leq v_i \leq 10^4