#P1397. 可持久化变量(var)
可持久化变量(var)
时间限制:秒,其他语言秒 空间限制:,其他语言
题目描述
小最近在学习可持久化数据结构,不过小w越学越困,然后他...他就睡着了。在梦境的世界中,他发现有一种可持久化的变量。只要用这种变量写出来的数据结构,都能变成可持久化数据结构。比如用这种变量开一个数组,这个数组就是一个可持久化数组,用这种变量写一颗线段树,线段树也变成可持久化线段树了。小w梦醒以后十分生气,因为现实中并不存在这么一种能够可持久化的变量。现在他把这个任务交给了你。
现在让你维护一个变量,变量的初始值为0并且该变量的值将不会超过int类型的范围,该变量支持以下四种操作:
ADD(x)操作,该变量的值增加x。
SUB(x)操作,该变量的值减少x。
SET(x)操作,设定该变量的值为x。
BACK(x)操作,回溯之前的x个操作,也就是x一定小于等于之前输入的操作总数(1x已经输入的 操作总数)。
例如BACK(1)表示回溯到上次操作前的状态,BACK(3)表示以当前操作为基准回溯到前3次操作前的状态,注意BACK操作本身也算作操作。
你需要在每一个操作之后,输出这个变量现在的值,输出的整数之间用空格隔开,行末不允许有多余空格。
输入描述:
第一行输入一个正整数n,表示操作的个数。 接下来n行,每行输入一个字符串OP和一个整数x。OP只能是"ADD"、"SUB"、"BACK"、"SET"的其中之一,意义见上文。
输出描述:
输出一行n个整数,表示这个变量在每一个操作后的值,输出的整数之间用空格隔开,行末不允许有多余空格。
示例
输入
7
ADD 2
SUB 3
BACK 1
BACK 1
BACK 1
BACK 2
SET 5
输出
2 -1 2 -1 2 2 5
说明
①在增加2以后,变量的值为2。
②在减少3以后,变量的值为-1。
③向前回溯1次操作后变量的值与①状态时相同,变量的值变为2。
④向前回溯1次操作后变量的值与②状态时相同,变量的值变为-1。
⑤向前回溯1次操作后变量的值与③状态时相同,变量的值为2。
⑥向前回溯2次操作后变量的值与③状态时相同,变量的值为2。
⑦直接设置变量的值为5。
备注:
对于10%的测试数据,保证。
对于100%的测试数据,保证,保证BACK操作中当前已操作总数,并且在运算的过程中以及最终答案不会超过int型所表示的范围。
对于测试点2,在满足100%的测试数据的基础上额外保证只含有ADD、SUB两个操作。
对于测试点3,在满足100%的测试数据的基础上额外保证只含有ADD、SUB、SET三个操作。
百度网盘大样例下载 提取码: GFOI