PUT 和 INCREASE 都会创建或修改记录,并令对应编号的累计次数加 1。REMOVE 在编号存在时删除当前记录并令累计次数加 1;编号不存在时只增加失败次数。每个编号初始都没有对应记录,未记录的数值可视为 0。按给定顺序处理下列指令:
PUT key value:把编号 key 的数值设为 value;编号尚无记录时,先建立记录。INCREASE key delta:使编号 key 的数值增加 delta;若其当前未登记,则新建一条初始值为 0 的记录后再增加。REMOVE key:当编号 key 有记录时将其删除;否则此次操作无法完成。每次成功完成 PUT、INCREASE 或 REMOVE 均计为一次成功变更。全部指令处理完毕后,请依次给出成功变更总数、未能完成的 REMOVE 指令数,以及最终仍保留、数值不为 0 且该编号累计成功变更次数恰为 1 的编号个数。
各编号的累计成功变更次数分别记录。对某编号成功执行 PUT、INCREASE 或将其记录成功移除,都会使该计数增加 1。移除记录时不清除累计计数;之后同一编号再次创建记录,计数从原值接着累加。未成功执行的指令不改变累计计数。
首行给出整数 M,表示待处理指令的总数。 再接下来 M 行,每行描述一条指令,格式为以下三种之一:
PUT key valueINCREASE key deltaREMOVE key其中 key 为编号,value 与 delta 均为整数。
输出一行三个整数,分别表示成功变更次数、失败的 REMOVE 指令数、符合条件的最终编号数量。
任意时刻记录中的数值及输出答案均可用有符号 64 位整数表示。
输入:
8
PUT 8 4
REMOVE 8
PUT 8 0
INCREASE 9 6
REMOVE 9
REMOVE 9
PUT 11 -2
REMOVE 12
输出:
6 2 1
编号 8 成功设置、移除、再次设置,最终数值为 0 且累计次数为 3;编号 9 创建后又被移除,之后再次移除失败;编号 11 只成功设置一次,最终仍保留且数值为 −2;编号 12 从未存在,移除操作失败。因此最终符合条件的编号只有 11。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册