Легенда

Следить за чем-то бывает не так просто, а когда следить нужно сразу за многими вещами – здесь справится не каждый. Но можно доверить эту задачу роботам.

На Белоптичкинской птицефабрике проводится работа по технологизации слежки за подрастающими цыплятами. Руководство фабрики обратилось за помощью к местному кружку робототехников, и они собрали «робо-маму». Она круглосуточно отслеживает и различает цыплят с помощью ИИ и машинного зрения.

В прошлом году ребятам удалось «подружить» робота с системой управления птицефабрикой, написанной на языке 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 попыток.

Видео-разбор