Контест Middle Делегаты и события обновлено

Подписки на темы: события и отписка

Условие

Смоделируйте издателя событий. Команды:

  • SUB name topic подписать name на тему (повторная подписка ничего не меняет);
  • UNSUB name topic отписать (если не был подписан, ничего не происходит);
  • PUB topic опубликовать событие: каждый текущий подписчик темы получает его.

Ввод: q (1 ≤ q ≤ 10⁴), затем q команд. Имён не больше 200, тем не больше 20.

Вывод: на каждый PUB строку topic число_получателей. В конце одну строку name:получено для всех, кто хоть раз подписывался, по возрастанию имени через пробел (пустая строка, если таких нет).

Пример

6
SUB anna news
SUB boris news
PUB news
UNSUB anna news
PUB news
PUB sport
news 2
news 1
sport 0
anna:1 boris:2

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме