题号:NC308524
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
冷热数据队列

可以看做由两个子队列组成:长度为

的热数据队列

和长度为

的冷数据队列

。当我们需要访问某个数据页

时:
1. 若

不在队列

中(即既不在

中,也不在

中),则加载数据页

,并插入到

的首部。
2. 若

已经在队列

中,则将

移动至

首部。
3. 当

或

队列容量不足时,会将其尾部的数据页淘汰出去。
4. 当

已满,但

未满时,从

中淘汰出的数据页会移动到

首部。
输入描述:
输入的第一行包含两个正整数
,用一个空格分隔。
第二行包含一个整数
,表示操作次数。
第三行包含
个非负整数
,表示依次访问到的数据页的编号,相邻整数之间使用一个空格分隔。
- 对于所有评测用例,
,
,
。
输出描述:
输出两行。
第一行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示
中的数据页。
第二行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示
中的数据页。
示例1
输入
复制
3 3
10
1 2 3 4 3 2 2 1 3 4