CF1531D Редактируем Зингер | color

题目描述

许多人不知道,VKontakte 的员工可以对位于总部辛格大厦的圆顶灯光颜色进行更改。只需要在指定的聊天「Zinger | color」中发送一条颜色消息,机器人就能够识别并更换灯光颜色。不过需要注意的是,当城内有活动时,颜色更改会被锁定。 机器人能够处理以下三种类型的消息: - `lock`:锁定颜色更改。若当前已锁定,则忽略该消息。 - `unlock`:解锁颜色更改。若当前已解锁,则忽略该消息。 - `red` / `orange` / `yellow` / `green` / `blue` / `indigo` / `violet`:在颜色更改未锁定的情况下,将圆顶的颜色更改为指定颜色。 你将获得按时间顺序记录的消息历史。默认情况下,在接受第一条消息之前,圆顶显示蓝色(`blue`),颜色更改功能处于解锁状态。 作为一项实验,机器人新增了对消息编辑的高效处理功能。你将收到一组编辑操作:每个操作以 $ (i, msg) $ 的形式给出,其中 $ i $ 是按顺序的第 $ i $ 条消息,$ msg $ 是编辑后的新消息内容。任何消息都可能会被编辑,而每次编辑后,机器人都需要重新从头处理所有的消息历史记录(需要注意,每次处理前,圆顶状态均为蓝色,且未锁定)。 请根据给定的消息历史和编辑操作,依次找出在各次编辑之前及之后,辛格大厦圆顶的颜色状态。

输入格式

第一行包含一个整数 $ n $ ($ 1 \le n \le 10^5 $),表示机器人收到的消息数量。 接下来的 $ n $ 行提供机器人按时间顺序收到的每条消息。每条消息为以下字符串之一:`lock`, `unlock`, `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, `violet`。消息按照 $ 1 $ 至 $ n $ 编号。 下一行包含一个整数 $ t $ ($ 1 \le t \le 10^5 $),表示编辑操作的次数。 最后的 $ t $ 行按时间顺序给出每次编辑操作。每个操作由两个元素构成:消息编号 $ i $ ($ 1 \le i \le n $) 和新的消息内容 $ msg $,$ msg $ 取值同上述集合。

输出格式

输出 $ t + 1 $ 行:第一行为第一次编辑之前圆顶的颜色,接下来的每一行是在每次编辑操作之后圆顶的颜色。

说明/提示

- $ 1 \le n \le 10^5 $ - $ 1 \le t \le 10^5 $ **本翻译由 AI 自动生成**