题目描述
冷热数据队列 q 可以看做由两个子队列组成:长度为 n1 的热数据队列 q1 和长度为 n2 的冷数据队列 q2。当我们需要访问某个数据页 p 时:
- 若 p 不在队列 q 中(即既不在 q1 中,也不在 q2 中),则加载数据页 p,并插入到 q2 的首部。
- 若 p 已经在队列 q 中,则将 p 移动至 q1 首部。
- 当 q1 或 q2 队列容量不足时,会将其尾部的数据页淘汰出去。
- 当 q1 已满,但 q2 未满时,从 q1 中淘汰出的数据页会移动到 q2 首部。
输入格式
输入的第一行包含两个正整数 n1,n2,用一个空格分隔。
第二行包含一个整数 m,表示操作次数。
第三行包含 m 个正整数 v1,v2,⋯,vm,表示依次访问到的数据页的编号,相邻整数之间使用一个空格分隔。
输出格式
输出两行。
第一行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q1 中的数据页。
第二行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q2 中的数据页。
样例
3 3
10
1 2 3 4 3 2 2 1 3 4
4 3 2
1
解释 #1
i |
vi |
q1 |
q2 |
− |
− |
[] |
[] |
1 |
1 |
[1] |
2 |
2 |
[2,1] |
3 |
3 |
[3,2,1] |
4 |
4 |
[4,3,2] |
5 |
3 |
[3] |
[4,2] |
6 |
2 |
[2,3] |
[4] |
7 |
8 |
1 |
[1,4] |
9 |
3 |
[3,2] |
10 |
4 |
[4,3,2] |
[1] |
数据范围
- 对于 20% 的评测用例,1≤n1,n2≤10,1≤m≤10;
- 对于 40% 的评测用例,1≤n1,n2≤20,1≤m≤100;
- 对于 60% 的评测用例,1≤n1,n2≤100,1≤m≤1000;
- 对于 80% 的评测用例,1≤n1,n2≤103,1≤m≤104;
- 对于所有评测用例,1≤n1,n2≤104,1≤m≤105,0≤vi≤104。