#LQB15. 冷热数据队列

冷热数据队列

题目描述

小蓝是一名计算机专业的学生,最近他学习了《操作系统》、《数据结构》等课程,他设计了一种名为“冷热数据队列”的数据结构,来对数据页进行管理。

冷热数据队列 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,··· ,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 +1+1 [1][1]
22 +2+2 [2,1][2,1]
33 +3+3 [3,2,1][3,2,1]
44 +4+4 [4,3,2][4,3,2]
55 +3+3 [3][3] [4,2][4,2]
66 +2+2 [2,3][2,3] [4][4]
77
88 +1+1 [1,4][1,4]
99 +3+3 [3,2][3,2]
1010 +4+4 [4,3,2][4,3,2] [1][1]

数据范围

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

额外挑战

  • 对于额外挑战的评测用例,1m1061≤m≤10^6