HM280 五处修补

HM280 五处修补

HM280 五处修补

来源: 第 280 集 演讲比赛流程管理系统-解决程序中的bug

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

演讲赛记录模块已经能存、能读、能展示,但还有五处逻辑漏洞,必须全部按下面的规则修掉:

  1. 空档还在看榜:磁盘记录不存在或已被清空时,展示函数要先看空标志。若为空,只输出 文件为空或者文件不存在,不要打印空白榜。
  2. 刚写完仍报空:只要成功追加过一届,就把空标志改成「非空」。
  3. 内存没跟上磁盘:保存成功后必须立刻按磁盘内容重载内存表,否则刚写完的本届在内存里看不见。
  4. 初始化漏清表:重置时必须把往届内存表整表清空。只删磁盘、不清内存,表里还会留着旧行。
  5. 抽签不换种:未设置随机数种子时,每次打乱都得到同一组编号;设置种子后,使用本次提供的三个编号。本题禁止依赖未固定的系统时间,种子只改变上述规则。

请实现一台修补后的记录机,支持下列指令(大小写敏感):

  • 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%
上传者