4. Гонки (25 баллов)
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Фред и Джордж придумали новую игру. Из толстых фолиантов строится лестница, а на некотором расстоянии от нее отмечается линия финиша. Затем участники игры по очереди ставят свои машинки на разгонный спуск. Под действием силы тяжести машинка разгоняется, затем прыгает по ступенькам лестницы и, наконец, останавливается из-за силы трения. Выигрывает владелец машинки, которая остановится ближе остальных к линии финиша.
Напишите программу, которая определяет место, куда нужно поставить машинку, чтобы она остановилась точно на финишной черте. Ускорение свободного падения считать равным `10\ м/с^2`. Сила трения действует на разгонном спуске и горизонтальных участках пути с ускорением `1\ м/с^2`. Вертикальная составляющая скорости полностью гасится после разгонного спуска или прыжка (кинетическая энергия переходит во внутреннюю). Размер машинки считать точечным. Угол наклона разгонного спуска равен `45^o`.
В первой строке входного файла содержатся два целых числа, разделенных пробелом – количество ступенек в лестнице `N` (`1\ ≤\ N\ ≤\ 10`) и расстояние от нижней ступеньки до финиша `R` (`10\ ≤\ R\ ≤\ 200`). Далее следует `N` строк, в каждой строке содержатся два целых числа, разделенных пробелом – длина ступеньки `L_i` (`5\ ≤\ L_i\ ≤\ 25`) и высота ступеньки `H_i` (`1\ ≤\ H_i\ ≤\ 10`). Ступеньки описываются, начиная с верхней. Все расстояния и высоты даны в сантиметрах.
В первой строке выходного файла вывести одно число с 6 десятичными знаками – расстояние в сантиметрах от нижней кромки разгонного спуска до места, куда нужно поставить машинку. Если существует несколько вариантов, то вывести наименьшее расстояние.
Пример ввода
3 40
25 5
20 5
25 10
Вывод для примера
26.128045
Формулы для движения с ускорением:
`v=v_0+a*t` (скорость);
`S=S_0+v_0*t+a*t^2/2` (путь)