在小慕负责的「魔法水晶核心」项目中,每位法师都可以将自己的魔法程序到共享的水晶存储核心中。 为了保证魔力的平衡,系统设立了存储管理模块,支持以下操作: * MagicStorageCore(totalMana) 初始化存储核心,总魔力容量为 `totalMana`,且初始时没有任何魔法程序。 输出固定为 `"null"`。 * sealProgram(mageId, spellId, mana) 编号为 `mageId` 的法师尝试封印一个魔力消耗为 `mana` 的魔法程序 `spellId`。 * 如果 `spellId` 已经存在于水晶中(不论属于哪个法师),或,则返回 `False`。 * 否则,封印成功,返回 `True`。 * releaseProgram(spellId) 从水晶中释放(删除)魔法程序 `spellId`。 * 如果该 `spellId` 不存在,则返回 `False`。 * 否则,释放成功并返还其占用,返回 `True`。 * getSupremeMage() 返回当前(且大于 `0`)的法师编号 `mageId`。 * 如果有多个法师并列,则返回编号最小的那个。 * 如果不存在任何法师,则返回 `-1`。
提示:带虚线的词点一下有通俗解释。
输入描述
1. 第一行输入一个整数 `Q`,表示操作次数。 2. 接下来共 `Q` 组操作: * 每组的第一行是命令字符串,可能取值为: * `"MagicStorageCore"` * `"sealProgram"` * `"releaseProgram"` * `"getSupremeMage"` * 若命令为 `"MagicStorageCore"`,接下来一行输入一个整数: * `totalMana`:系统总容量。 * 若命令为 `"sealProgram"`,接下来三行输入三个整数: * `mageId`:法师编号 * `spellId`:魔法程序编号 * `mana`:该程序占用的存储量 * 若命令为 `"releaseProgram"`,接下来一行输入一个整数: * `spellId`:要释放的程序编号 * 若命令为 `"getSupremeMage"`,则无额外输入。 * `1 <= Q <= 2000` * `1 <= totalMana <= 1000000` * `0 <= mageId < 1000000` * `0 <= spellId < 1000000` * `1 <= mana <= 1000000`
输出描述
* 对于 `MagicStorageCore` 初始化操作,输出 `"null"`。 * 对于 `sealProgram` 和 `releaseProgram`,输出 `True` 或 `False`。 * 对于 `getSupremeMage`,输出一个整数(法师编号或 `-1`)。
示例
示例 1
输入
12 MagicStorageCore 40 sealProgram 1 10 20 sealProgram 2 11 20 getSupremeMage sealProgram 3 10 5 sealProgram 2 12 30 getSupremeMage releaseProgram 11 getSupremeMage releaseProgram 10 releaseProgram 12 getSupremeMage
输出
null True True 1 False False 1 True 1 True False -1
说明:MagicStorageCore 40 → 初始化成功 → 输出 null sealProgram 1 10 20 → 成功(法师1占20) → 输出 True sealProgram 2 11 20 → 成功(法师2占20,总满) → 输出 True getSupremeMage → 法师1与2并列,占用相同,取编号小的 → 输出 1 sealProgram 3 10 5 → 失败(spellId=10 已存在) → 输出 False sealProgram 2 12 30 → 失败(容量不足) → 输出 False getSupremeMage → 仍然是法师1和2并列 → 输出 1 releaseProgram 11 → 成功释放 spellId=11(法师2占用清零) → 输出 True getSupremeMage → 只剩法师1 占20 → 输出 1 releaseProgram 10 → 成功释放 spellId=10(法师1占用清零) → 输出 True releaseProgram 12 → 失败(spellId=12 不存在) → 输出 False getSupremeMage → 所有法师占用均为0 → 输出 -1
时间限制 1000 ms · 内存限制 128 MB