小慕正在设计一个文件缓存系统,该系统可以设定缓存的最大容量(单位为字节)。 该系统支持两种操作:存储文件(put)和读取文件(get)。操作命令格式为 put fileName fileSize 或 get fileName。 存储文件时,将文件放入缓存系统中;读取文件时,从缓存系统中访问已存在的文件,如果文件不存在,则不进行任何操作。 当不足以存放新文件时,系统会根据规则删除文件,直到剩余空间满足新文件的大小要求,然后再存放新文件。 具体的删除规则为:文件被访问后,会更新该文件的最近访问时间和总访问次数。当缓存空间不足时,优先按照访问次数从少到多的顺序删除文件,如果访问次数相同,则按照访问时间从旧到新的顺序删除文件。
提示:带虚线的词点一下有通俗解释。
输入描述
<p> 第一行为缓存最大值m(整数,取值范围为0 < m <= 52428800) </p> <p> 第二行为文件操作序列个数n(0 <= n <= 300000) </p> <p> 从第三行起为文件操作序列,每个序列单独一行 </p> <p> 文件操作定义为"op fileName fileSize" fileName是文件名,fileSize是文件大小 </p>
输出描述
<p> 输出当前文件缓存中的文件名列表,文件名用英文逗号分隔,按字典顺序排序 </p> <p> 如:a,c </p> <p> 如果文件缓存中没有文件,则输出NONE </p>
示例
示例 1
输入
50 6 put a 10 put b 20 get a get a get b put c 30
输出
a,c
示例 2
输入
50 7 put a 10 put b 20 get a get a get b get b put c 30
输出
b,c
示例 3
输入
60 7 put a 10 put b 20 get a get a get b put c 30 get c
输出
a,b,c
示例 4
输入
60 0
输出
NONE
时间限制 1000 ms · 内存限制 128 MB