HM280 五处修补
HM280 五处修补
来源: 第 280 集 演讲比赛流程管理系统-解决程序中的bug
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
演讲赛记录模块已经能存、能读、能展示,但还有五处逻辑漏洞,必须全部按下面的规则修掉:
- 空档还在看榜:磁盘记录不存在或已被清空时,展示函数要先看空标志。若为空,只输出
文件为空或者文件不存在,不要打印空白榜。 - 刚写完仍报空:只要成功追加过一届,就把空标志改成「非空」。
- 内存没跟上磁盘:保存成功后必须立刻按磁盘内容重载内存表,否则刚写完的本届在内存里看不见。
- 初始化漏清表:重置时必须把往届内存表整表清空。只删磁盘、不清内存,表里还会留着旧行。
- 抽签不换种:未设置随机数种子时,每次打乱都得到同一组编号;设置种子后,使用本次提供的三个编号。本题禁止依赖未固定的系统时间,种子只改变上述规则。
请实现一台修补后的记录机,支持下列指令(大小写敏感):
SHOW:若空标志为真,输出那句空档提示;否则按第 \(1\) 届起输出内存表,格式与往届榜相同:第X届 冠军编号为 A 得分 B 亚军编号为 C 得分 D 季军编号为 E 得分 F。SAVE a sa b sb c sc:把一届六字段追加到磁盘,空标志改为假,再把磁盘同步进内存。WIPE_DISK:清空磁盘并把空标志设为真,**不要**改内存表。INIT:只清空内存表,不改磁盘、不改空标志。DUMP:先输出SIZE k(\(k\) 为内存表条数);若 \(k>0\),再按SHOW的榜单格式输出内存表(无视空标志)。SEED:设置随机数种子,输出已设置随机数种子。ROLL x y z:未设种子时忽略三个整数,输出10002 10008 10004;已设种子时输出x y z。
程序启动时:磁盘空、内存空、空标志为真、未设种子。
输入格式
第一行一个整数 \(q\)。
接下来 \(q\) 行,每行一条指令。
输出格式
按指令依次输出。行末换行。
样例
输入 #1
8
SHOW
SAVE 10002 86.675 10008 87.200 10004 88.100
SHOW
WIPE_DISK
SHOW
DUMP
INIT
DUMP
输出 #1
文件为空或者文件不存在
第1届 冠军编号为 10002 得分 86.675 亚军编号为 10008 得分 87.200 季军编号为 10004 得分 88.100
文件为空或者文件不存在
SIZE 1
第1届 冠军编号为 10002 得分 86.675 亚军编号为 10008 得分 87.200 季军编号为 10004 得分 88.100
SIZE 0
输入 #2
3
ROLL 1 2 3
SEED
ROLL 7 5 3
输出 #2
10002 10008 10004
已设置随机数种子
7 5 3
说明
\(1 \le q \le 200\)。编号与得分为不含空白的字符串,长度不超过 \(20\)。ROLL 的三个整数绝对值不超过 \(10^9\)。
样例 #1:空档先被拦住;保存后内存能立刻看到第 \(1\) 届;只擦磁盘时展示仍报空,但 DUMP 还能看到旧行,直到 INIT 才真正清表。样例 #2:没播种时打乱结果固定,播种后才换新编号。
信息
- ID
- 1279
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 通过率
- 100%
- 上传者