Задача 7. SNTPДля того чтобы компьютеры поддерживали актуальное время, они могут обращатьсяк серверам точного времени SNTP (Simp
Задача 7. SNTP
Для того чтобы компьютеры поддерживали актуальное время, они могут обращаться
к серверам точного времени SNTP (Simple Network Time Protocol). К сожалению, компьютер
не может просто получить время у сервера, потому что информация по сети передаётся не
мгновенно: пока сообщение с текущим временем дойдёт до компьютера, оно потеряет свою
актуальность. Протокол взаимодействия клиента (компьютера, запрашивающего точное
время) и сервера (компьютера, выдающего точное время) выглядит следующим образом:
1) Клиент отправляет запрос на сервер и запоминает время отправления A
(по клиентскому времени).
2) Сервер получает запрос в момент времени B (по точному серверному времени)
и отправляет клиенту сообщение, содержащее время B.
3) Клиент получает ответ на свой запрос в момент времени C (по клиентскому времени)
и запоминает его. Теперь клиент, из предположения, что сетевые задержки при
передаче сообщений от клиента серверу и от сервера клиенту одинаковы, может
определить и установить себе точное время, используя известные значения A, B, C.
Вам предстоит реализовать алгоритм, с точностью до секунды определяющий точное
время для установки на клиенте по известным A, B и C. При необходимости округлите
результат до целого числа секунд по правилам арифметики (в меньшую сторону, если
дробная часть числа меньше ½, иначе в большую сторону).
Возможно, что, пока клиент ожидал ответа, по клиентскому времени успели наступить
новые сутки, однако известно, что между отправкой клиентом запроса и получением ответа
от сервера прошло менее 24 часов.
Программа получает на вход три временные метки A, B, C. Каждая временная метка
состоит из трёх целых чисел: количества часов, количества минут, количества секунд. То есть
первые три строки входных данных содержат числа Ah, Am, As – часы, минуты, секунды
момента A по клиентскому времени. Следующие три строки содержат числа Bh, Bm, Bs – часы,
минуты, секунды момента B по времени сервера. Следующие три строки содержат числа Сh,
Сm, Сs – часы, минуты, секунды момента С по времени клиента.
Программа должна вывести три целых числа: часы, минуты, секунды вычисленного
точного времени, которое должен установить себе клиент.
Пример входных и выходных данных
Ввод
15
1
0
18
9
45
15
1
40
Вывод:
18
10
5
ПРИМЕЧАНИЕ
Клиент отправил запрос в 15:01:00 по своим часам, сервеР получил запрос в 18:09:45 по своим часам. Клиент получиЛ ответ в 15:01:40, в этот момент точное время будет 18:10:05.
Система оценивания
Решение, правильно работающее только для случаев, когда все три входных времени
и ответ на задачу принадлежат одним суткам, будет оцениваться в 6 баллов.