Ограничение времени 1 секунда Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Чтобы компьютер мог установить у себя точное время, он может использовать специальные сервера, рассылающие значения точного времени. Но при этом просто запросить значение времени у сервера недостаточно, так как данные передаются через сеть с определенной задержкой, и пока значение текущего времени дойдет от сервера до компьютера, оно потеряет свою актуальность.
Поэтому разработан специальный протокол, определяющий взаимодействие клиента (запрашивающего значение времени компьютера) и севера (рассылающего значение времени компьютера), содержащий следующие шаги:
Клиентский компьютер отсылает серверу свой запрос и сохраняет (по времени клиента) момент отправления А этого запроса;
В момент получения запроса клиента севером его точные часы показывают В. Это значение сервер и отправляет клиенту;
ответ сервера приходит клиенту в момент C по клиентскому времени, это значение клиентом также сохраняется. Теперь он в состоянии установить значение точного времени, располагая известными значениями А, В и С.
Предполагается, что значения задержки при передаче данных в направлениях клиент-сервер и сервер-клиент совпадают.
Требуется реализовать алгоритм, который с точностью до одной секунды находит точное значение времени для установки на клиентском компьютере по известным значениям А, В и С. При получении дробного результата необходимо округлить его до целого числа секунд по обычным правилам арифметики (если дробная часть числа меньше 0.5, то в меньшую сторону, иначе – в большую)
Нужно принять во внимание, что пока клиент ожидает ответа, по его клиентскому времени могут начаться новые сутки. При этом известно, что между моментом отправки запроса и получением ответа от сервера проходит менее 24 часов.
Формат ввода
Программа получает на вводе три момента времени, каждый записан в отдельной строке. Моменты времени представлены в формате «hh:mm:ss» (hh -– часы, mm – минуты, ss – секунды). Часы, минуты и секунды записываются ровно двумя цифрами с добавлением при необходимости ведущих нулей.
Формат вывода
Необходимо вывести в том же формате, что и на вводе единственный момент времени –- точное время, которое нужно установить на клиенте.
Пример
Ввод Вывод
15:01:00
18:09:45
15:01:40
18:10:05
Примечания
Клиент отправил запрос в 15:01:00 по своим часам, сервер получил запрос в 18:09:45 по своим часам. Клиент получил ответ в 15:01:40, в этот момент его точное время будет 18:10:05
def timestamp_to_time(timestamp):
seconds = 0
for token in timestamp.split(":"):
seconds = seconds * 60 + int(token)
return seconds
def time_to_timestamp(time):
seconds = time % 60
time //= 60
minutes = time % 60
time //= 60
hours = time % 24
return "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
A = timestamp_to_time(input())
B = timestamp_to_time(input())
C = timestamp_to_time(input())
if C < A:
C += timestamp_to_time("24:00:00")
t = (C - A + 1) // 2
current_time = B + t
print(time_to_timestamp(current_time))
Объяснение:
это я нашла у другого человека