Ограничение времени 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


olgafox8002: прошла на олимпиаду, не зная языки программирования. Успехи не очень, как видишь
AlexFJ: понимаю, нашла хоть что-нибудь?
olgafox8002: пока нет
AlexFJ: попробуй то, что я скинула
olgafox8002: на каком языке?
AlexFJ: питон
olgafox8002: СПАСИБО
AlexFJ: найдешь что-нибудь, сообщи, пожайлуста
olgafox8002: у меня пока только неработающий код на Джаве для 2 задачи
AlexFJ: у меня время и есть вторая задача:0

Ответы

Ответ дал: AlexFJ
1

Ответ:

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))

Объяснение:

это я нашла у другого человека

Вас заинтересует