Codeforces Round 363 (Div. 1) |
---|
Закончено |
Иногда мощности классических решений оказывается недостаточно, и приходится разрабатывать свои. В рамках данной задачи вам потребуется реализовать свою систему планирования задач.
Каждая задача должна быть запущена только в определённые моменты времени. В нашей системе можно задать, чему должна быть равна текущая секунда, минута, час, день недели, число и месяц, при которых задача должна быть запущена. При этом можно указать специальное значение -1, и тогда задача будет запущена при любом значении данного параметра.
Например, строка параметров -1 59 23 -1 -1 -1 будет означать, что задача будет запущена каждый день в 23:59:00, 23:59:01, 23:59:02, ..., 23:59:59 (всего 60 раз).
Секунды, минуты и часы нумеруются с нуля, а числа, месяцы и дни недели — с единицы. Первым днём недели считается понедельник.
Также есть один случай, который следует рассмотреть отдельно. Если в строке параметров указаны (то есть отличны от - 1) и день недели, и число, то для запуска задачи требуется совпадение только с одним из этих двух параметров (при этом, разумеется, должны выполняться и остальные параметры). Например, строка параметров 0 0 12 6 3 7 означает, что задача будет запущена как в субботу, второго июля, так и в воскресенье, третьего июля 2016 года, ровно в полдень.
Также необходимо помнить о существовании високосных лет. Год называется високосным, если его номер делится на 400, либо он не делится на 100, но при этом делится на 4. В каждом високосном году в феврале 29 дней вместо 28.
Текущее время будет представляться как количество секунд, которое прошло с 00:00:00 1 января 1970 года (четверг).
Вам дана строка из шести параметров, описывающая моменты времени для запуска задачи в формате, приведённом выше. Также дан набор времён. Для каждого из них необходимо найти первый момент времени, строго больший данного, в который задача будет запущена.
В первой строке задано шесть целых чисел s, m, h, day, date и month (0 ≤ s, m ≤ 59, 0 ≤ h ≤ 23, 1 ≤ day ≤ 7, 1 ≤ date ≤ 31, 1 ≤ month ≤ 12). Каждое число также может быть равно - 1. Гарантируется, что существует бесконечно много моментов времени, в которые данная задача должна быть поставлена на выполнение.
В следующей строке задано целое число n (1 ≤ n ≤ 1000) — количество моментов времени, для которых нужно решить задачу. В следующих n строках записано по одному целому числу ti (0 ≤ ti ≤ 1012).
Необходимо вывести n строк, i-я из них должна содержать наименьшее время, строго большее ti, в которое должна быть выполнена задача.
-1 59 23 -1 -1 -1
6
1467372658
1467417540
1467417541
1467417598
1467417599
1467417600
1467417540
1467417541
1467417542
1467417599
1467503940
1467503940
0 0 12 6 3 7
3
1467372658
1467460810
1467547200
1467460800
1467547200
1468065600
Если от полуночи первого января 1970 года отсчитать 1467372658 секунд, то получится 11:30:58 первого июля 2016 года.
Название |
---|