eolymp
bolt
Try our new interface for solving problems
Məsələlər

Трёхмерный пинбол в невесомости

Трёхмерный пинбол в невесомости

Корпорация "Пинбол’Ко", занимающаяся изготовлением игровых автоматов, разработала концепцию новой игры. Автомат называется "Трехмерный пинбол в невесомости". Игра проходит внутри прямоугольного параллелепипеда со сторонами \textbf{A}, \textbf{B} и \textbf{C}, причем в нем сохраняется полная невесомость. Задача игрока -- запустить шарик из определенной начальной точки в каком-либо направлении в свободный полет так, чтобы он задел как можно большее число разных стенок параллелепипеда и постараться при этом попасть в бонусную точку. Бонусная точка появляется лишь в том случае, если шарик ударился обо все стенки, но игроку заранее известно место ее появления. При полете шарик не теряет скорости, а при касании стенок отражается от них (происходит абсолютно упругое столкновение). За каждое касание стенки, которой шарик не касался до этого, игроку начисляется \textbf{P} очков. Игра заканчивается, если шарик повторно касается какой-либо стенки или прилетает в появившуюся бонусную точку. Причем во втором случае игроку начисляется дополнительный бонус. Величина этого бонуса -- \textbf{P/D}, где \textbf{D} -- дистанция, пройденная шариком за весь полет. Создателей игры заинтересовал вопрос -- какой максимальный бонус можно получить при заданных размерах игрового параллелепипеда и заданных начальной и бонусной точке. Для этого очевидно понадобится программа. Узнав, что Ваня в данный момент занят, и не хочет отвлекаться на такие пустяковые услуги, инженеры "Пинбол’Ко" очень расстроились. Но до них дошли слухи, что в "Кроне" собрались талантливые программисты, и они решили обратиться за помощью к вам. Итак, ваша задача -- по заданным параметрам прямоугольного параллелепипеда, начальному местоположению шарика в нем (для простоты будем считать шарик точкой), а также координатам места появления бонусной точки, вычислить максимальный бонус, который можно получить, запустив шарик в каком-либо направлении. Начало координат выбрано так, что совпадает с одной из вершин прямоугольного параллелепипеда, в котором происходит игра, а оси координат направлены к трем вершинам, имеющим с ней общие грани. При ударении об стенку, шарик меняет вектор своего движения по закону отражения. Если шарик сталкивается с гранью, то считается, что он столкнулся сразу с \textbf{2}-мя сторонами, которые соединены этой гранью. Соответственно, он отражается от них обоих и игроку начисляется бонус как за попадание в \textbf{2} стенки (но если шарик до этого уже сталкивался хоть с одной из этих двух стенок, то игра заканчивается, а бонус за это столкновение не начисляется). Столкновение с вершиной параллелепипеда считается столкновением сразу с \textbf{3}-мя сторонами, которым эта вершина принадлежит. В этом случае, так же как и в предыдущем - если шарик уже сталкивался хоть с одной из стенок, которым принадлежит вершина, которую он задел - игра заканчивается, а бонус за это столкновение не начисляется. \InputFile В первой строке входного файла заданы \textbf{3} целых положительных числа -- \textbf{A}, \textbf{B} и \textbf{C} (\textbf{2} ≤ \textbf{A}, \textbf{B}, \textbf{C} ≤ \textbf{1000}). Длины прямоугольного параллелепипеда по направлениям \textbf{OX}, \textbf{OY} и \textbf{OZ} соответственно. Во второй строке заданы три целых положительных числа -- \textbf{X_1}, \textbf{Y_1} и \textbf{Z_1}, задающие координаты начального нахождения шарика в параллелепипеде. В третьей строке заданы три целых положительных числа -- \textbf{X_B}, \textbf{Y_B} и \textbf{Z_B}, задающие координаты места появления бонусной точки. Все координаты находятся в пределах \textbf{0} < \textbf{X} < \textbf{A}, \textbf{0} < \textbf{Y} < \textbf{B}, \textbf{0} < \textbf{Z} < \textbf{C}. В четвертой строке записано единственное целое положительное число -- величина бонуса \textbf{P} (\textbf{1} ≤ \textbf{P} ≤ \textbf{1000}). \OutputFile В первую строку выходного файла вывести единственное число - максимально возможный бонус, который можно набрать при заданных параметрах игры, округленный до \textbf{4}-х знаков после запятой.
Zaman məhdudiyyəti 2 saniyə
Yaddaşı istafadə məhdudiyyəti 256 MiB
Giriş verilənləri #1
3 3 3
1 1 1
2 2 2
100
Çıxış verilənləri #1
611.5470