CF1531D.Редактируем Зингер | color
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Немногие знают, что сотрудники ВКонтакте могут менять цвет подсветки в куполе знаменитого Дома Зингера, где расположена штаб-квартира ВКонтакте. Для этого нужно всего лишь отправить сообщение с цветом в специальный чат «Зингер | color», а бот его распознает и сменит подсветку. При этом на время городских мероприятий смена цвета блокируется.
Формально, бот обрабатывает три типа сообщений:
- lock: заблокировать изменение цвета. Если оно и так заблокировано на данный момент, сообщение игнорируется.
- unlock: разблокировать изменение цвета. Если оно и так разблокировано на данный момент, сообщение игнорируется.
- red / orange / yellow / green / blue / indigo / violet: изменить цвет купола на заданный, если изменение цвета на данный момент не заблокировано.
Вам дана история сообщений, полученных ботом, в хронологическом порядке. Считайте, что перед получением первого сообщения купол подсвечивается голубым (blue), а изменение цвета не заблокировано.
В качестве эксперимента было решено поддержать в боте эффективную обработку редактирования сообщений. Вам дана последовательность пар вида (i,msg), означающих, что i-е в хронологическом порядке сообщение было отредактировано и теперь имеет вид msg. Обратите внимание, что редактироваться может любое сообщение, и при редактировании сообщения бот должен обработать всю историю сообщений заново (в частности, перед обработкой первого сообщения цвет купола голубой, а изменение цвета не заблокировано).
Определите, какой цвет будет у купола Дома Зингера до первой операции редактирования, а также после каждой операции редактирования.
很少有人知道,VKontakte(VK)的员工可以更改著名辛格大厦(Singer House)穹顶的灯光颜色——VK总部即坐落于此。只需向专用聊天室“Зингер | color”(辛格 | color)发送一条包含颜色名称的消息,机器人便会识别该消息并更改穹顶灯光颜色。不过,在城市举办活动期间,颜色更改功能会被临时禁用。
形式化地,机器人处理以下三类消息:
lock:锁定颜色更改功能。若当前已处于锁定状态,则忽略该消息;unlock:解锁颜色更改功能。若当前已处于解锁状态,则忽略该消息;red/orange/yellow/green/blue/indigo/violet:若当前未被锁定,则将穹顶灯光颜色更改为指定颜色。
现按时间顺序给出机器人接收到的一系列消息。初始状态下(即第一条消息到达前),穹顶灯光为蓝色(blue),且颜色更改功能处于未锁定状态。
作为一项实验,现决定在机器人中支持对消息编辑操作的高效处理。您将获得一系列形如 (i,msg) 的二元组,表示按时间顺序排列的第 i 条消息已被编辑,其内容更新为 msg。请注意:任意一条消息都可能被编辑;每当某条消息被编辑后,机器人必须重新处理整段消息历史(特别地,每次重新处理时,第一条消息被处理前的状态均为:穹顶为蓝色,且颜色更改功能未锁定)。
请确定:在首次编辑操作发生之前,以及每次编辑操作完成之后,辛格大厦穹顶的灯光颜色分别为何。
输入格式
В первой строке задано одно целое число n (1≤n≤105) — число сообщений, полученных ботом.
В следующих n строках заданы сообщения, полученные ботом, в хронологическом порядке, по одному сообщению в строке. Каждое сообщение — строка из следующего набора: lock, unlock, red, orange, yellow, green, blue, indigo, violet. Сообщения пронумерованы от 1 до n.
В следующей строке задано одно целое число t (1≤t≤105) — число операций редактирования сообщений.
В следующих t строках заданы операции редактирования в хронологическом порядке, по одной в строке. Каждая операция — пара из номера сообщения i (1≤i≤n) и его нового содержимого msg, также принадлежащего набору lock, unlock, red, orange, yellow, green, blue, indigo, violet.
第一行包含一个整数 n(1≤n≤105),表示机器人接收到的消息数量。
接下来的 n 行按时间顺序给出机器人接收到的消息,每行一条消息。每条消息为以下字符串之一:lock、unlock、red、orange、yellow、green、blue、indigo、violet。消息编号从 1 到 n。
下一行包含一个整数 t(1≤t≤105),表示编辑消息的操作次数。
接下来的 t 行按时间顺序给出编辑操作,每行一个操作。每个操作由一个消息编号 i(1≤i≤n)及其新内容 msg 组成;其中 msg 同样属于集合 lock、unlock、red、orange、yellow、green、blue、indigo、violet。
输出格式
Выведите t+1 строку: цвет купола до первой операции редактирования, а также после каждой операции редактирования в хронологическом порядке.
输出 t+1 行:穹顶在第一次编辑操作之前的颜色,以及每次编辑操作之后的颜色(按时间顺序)。
输入输出样例
输入#1
7 red violet unlock red orange lock indigo 6 5 green 6 lock 6 yellow 4 lock 1 lock 5 unlock
输出#1
orange green green indigo violet blue indigo
输入#2
1 red 8 1 lock 1 unlock 1 blue 1 unlock 1 unlock 1 lock 1 yellow 1 lock
输出#2
red blue blue blue blue blue blue yellow blue
输入解题思路,AI测评打分。不知道怎么写?