Pythagoraslope
Алиса, твоя девушка, учится в художественной школе. Она на последнем курсе и сейчас усердно работает над созданием фактуры, чтобы выполнить требования для выпуска. Её проект — это большой пинбол с множеством прямых наклонов. Прежде чем приступить к строительству, она составила несколько планов, но не уверена, работают ли они так, как задумано. Поэтому она обратилась к тебе, профессиональному программисту, за помощью.
Ты смоделировал эту ситуацию на двумерной плоскости с некоторыми отрезками на ней. В этой модели действует гравитация вниз, то есть в направлении уменьшения y-координаты. Твоя задача — написать программу, которая симулирует пинбол и вычисляет последнюю позицию, где шар пересекает x-ось.
Можно предположить, что коэффициент восстановления между наклонами и шаром равен 0, то есть, когда шар сталкивается с наклоном, он мгновенно теряет компоненту скорости, ортогональную наклону. И поскольку её пинбол такой большой, можно также предположить, что объём шара незначителен.
Входные данные
Входные данные состоят из нескольких наборов данных. Каждый набор данных представлен в формате ниже.
N
g
x y
x_{1,1} y_{1,1} x_{1,2} y_{1,2}
. . .
x_{N,1} y_{N,1} x_{N,2} y_{N,2}
где N (N ≤ 100) — количество наклонов, g — ускорение свободного падения, а (x, y) — начальная позиция шара. Каждая из следующих N строк представляет наклон, который является отрезком между (x_{i,1}, y_{i,1}) и (x_{i,2}, y_{i,2}). Можно предположить, что:
все координаты больше или равны 1 и меньше или равны 10000;
x_{i,1} ≠ x_{i,2} и y_{i,1} ≠ y_{i,2} для всех 1 ≤ i ≤ N;
никакие два отрезка не пересекаются;
удлинение или сокращение наклона на длину 0.0001 не изменяет траекторию шара, то есть не изменяет набор наклонов, через которые проходит шар;
шар никогда не сталкивается с наклоном под углом 90 ± 0.0001 градусов к наклону; и
начальная позиция шара никогда не лежит на каком-либо наклоне.
Конец ввода обозначается строкой, содержащей один ноль. Это не часть наборов данных, и её не следует обрабатывать.
Выходные данные
Для каждого набора данных выведите x-координату последней точки пересечения траектории шара и x-оси. Ваша программа может выводить любое количество цифр после десятичной точки, но ошибка вывода не должна превышать 10^{−4} ( = 0.0001).