Кибер-наседка (НТО 24/25 :: ТБС)
Легенда
Следить за чем-то бывает не так просто, а когда следить нужно сразу за многими вещами – здесь справится не каждый. Но можно доверить эту задачу роботам.
На Белоптичкинской птицефабрике проводится работа по технологизации слежки за подрастающими цыплятами. Руководство фабрики обратилось за помощью к местному кружку робототехников, и они собрали «робо-маму». Она круглосуточно отслеживает и различает цыплят с помощью ИИ и машинного зрения.
В прошлом году ребятам удалось «подружить» робота с системой управления птицефабрикой, написанной на языке COBOL задолго до основания кружка. Теперь же умные техники успели съездить на финал НТО по профилю “Технологии беспроводной связи“ и поняли, как можно улучшить программу и реализовать новый режим работы, необходимый птицефабрике.
Напишите программу-драйвер для обновлённой «кибер–мамы», реализующую логику приёма и ответа согласно заданного протокола. Система управления отправляет в драйвер одну из следующих команд:
REMEMBER name priority
– добавить в память цыплёнка с заданным именем и приоритетом слежения (целое число от 1). Если такой цыплёнок уже добавлен, ответитьERROR EXIST
, иначеOK
.FORGET name
– удалить цыплёнка с заданным именем из памяти. Если такого цыплёнка нет в памяти, ответитьERROR MISSING
, иначеOK
.WATCH name
– начать следить за цыплёнком с заданным именем. Если такой цыплёнок не существует, ответитьERROR MISSING
, иначеOK
, даже если слежение за цыплёнком уже ведётся.UNWATCH name
– перестать следить за цыплёнком с заданным именем. Если такой цыплёнок не существует, ответитьERROR MISSING
, иначеOK
, даже если слежение за цыплёнком не ведётся.LIST type
– перечислить цыплят в алфавитном порядке через запятую с пробелом. Например:123, CHEEPY3, TAPI
. Параметрtype
задаёт необходимый список:ALL
– вывести всех цыплят в памяти,WATCH
– всех, за которыми идёт слежка.ECOMODE priority
– включить режим экономии энергии с заданным приоритетом. Приоритет 0 выключает этот режим. ОтветитьOK
.
В одной строке передаётся только одна команда. Но из-за особенностей драйвера могут встречаться лишние пробелы в начале и конце строки или между словами, а также пустые строки. Их нужно игнорировать.
Режим экономии работает следующим образом: все цыплята, приоритет для которых ниже заданного, больше не отслеживаются. При этом драйвер продолжает принимать команды на измерение слежения за цыплятами, но лишь запоминает необходимое состояние, при этом не начиная следить за теми, кто не подходит по приоритету.
Если переданная команда не соответствует протоколу, следует отвечать ERROR SYNTAX
.
Имя цыплёнка (name
) всегда представляет собой последовательность заглавных латинских букв и цифр. При попытке назвать цыплёнка иначе нужно отвечать ERROR NAME
в любой команде.
Приоритет всегда является целым положительным числом (нуль допустим только в команде ECOMODE
). При попытке прописать некорректный приоритет нужно отвечать ERROR PRIORITY
.
При выдаче ошибок система отдаёт приоритет синтаксическим, после параметрическим, и только затем семантическим.
Ограничение времени | 1 секунда |
Ограничение памяти | 64Mb |
Ввод | стандартный ввод или input.txt |
Вывод | стандартный вывод или output.txt |
Для решения этой задачи у вас есть 20 попыток.