Календарь напоминаний
Просмотр в формате PDFАссистент календаря хранит список напоминаний и для заданной даты должен определить, какие из них срабатывают в этот день.
Поддерживаются три типа напоминаний:
ONCE YYYY-MM-DD title— однократное напоминание на конкретную дату;DAILY YYYY-MM-DD title— ежедневное напоминание, которое срабатывает каждый день, начиная с указанной даты включительно;WEEKLY YYYY-MM-DD title— еженедельное напоминание, которое срабатывает в указанную дату и далее каждые7дней.
Дата задаётся в формате YYYY-MM-DD и соответствует григорианскому календарю. Все даты во входных данных корректны.
title — непустая строка длиной от 1 до 40, состоящая из печатаемых ASCII-символов. Внутри названия могут встречаться пробелы. Между типом напоминания, датой и названием находится ровно один пробел.
Необходимо вывести все напоминания, которые срабатывают в заданную дату, в том же порядке, в котором они были перечислены во входных данных.
Напоминание типа ONCE срабатывает только тогда, когда запрошенная дата совпадает с датой напоминания.
Напоминание типа DAILY срабатывает, если запрошенная дата не раньше даты начала.
Напоминание типа WEEKLY срабатывает, если запрошенная дата не раньше даты начала, а разница между этими датами в днях кратна 7.
Входные данные
В первой строке содержится целое число n — количество напоминаний.
В следующих n строках задано по одному напоминанию в одном из форматов, описанных в условии.
В последней строке задана дата YYYY-MM-DD — дата, для которой нужно определить список срабатывающих напоминаний.
Выходные данные
В первой строке выведите количество напоминаний k, которые срабатывают в указанную дату.
В следующих k строках выведите названия этих напоминаний в порядке их появления во входных данных.
Если k = 0, то после первой строки ничего выводить не нужно.
Ограничения
1 <= n <= 10^41970 <= year <= 2100- запрашиваемая дата находится в диапазоне от
1970-01-01до2100-12-31 - все даты во входных данных корректны
- длина
titleот1до40символов
Примеры
Пример 1
Входные данные
3
ONCE 2024-02-29 leap day once
DAILY 2024-02-28 every day after leap eve
WEEKLY 2024-02-15 every thursday sample
2024-02-29
Выходные данные
3
leap day once
every day after leap eve
every thursday sample
Пример 2
Входные данные
4
ONCE 1970-01-01 epoch start
DAILY 1970-01-02 second day onward
WEEKLY 1970-01-08 exact weekly hit
WEEKLY 1970-01-09 weekly miss
1970-01-08
Выходные данные
2
second day onward
exact weekly hit
Комментарии