QOJ.ac

QOJ

Limite de temps : 3 s Limite de mémoire : 512 MB Points totaux : 100

#854. Лучник Влад

Statistiques

Влад был примерным студентом, известным своими исключительными приключениями, многие из которых сохранились в виде задач для олимпиад по программированию. Но такая беспокойная жизнь немного утомила Влада. «Куда бы я ни пошел, везде одни задачи! С меня хватит!» — объявил он прямо перед тем, как покинуть университет и направиться в Бещады.

Влад снял небольшой домик, в котором провел первые несколько месяцев своего отпуска. Но вскоре скука начала овладевать им, поэтому Влад решил найти себе хобби: он купил лук, несколько стрел и начал свои ежедневные тренировки по стрельбе из лука. И после нескольких месяцев упорных тренировок Влад достиг весьма впечатляющих результатов, так как смог выпустить стрелу с поразительной скоростью $C$ метров в секунду. Но было трудно наслаждаться такими достижениями, когда рядом никого нет.

«Смотри! Я встану прямо здесь и выстрелю так быстро, что стрела пролетит над каждым из этих деревьев!» — воскликнул Влад вам, молодому программисту, решившему навестить его. Влад натянул тетиву и выпустил первую стрелу. Ее оперение покачивалось в воздухе, наконечник сверкал в небе... но она попала в дерево. «Подожди, дай попробую еще раз!»

Его вторая попытка была еще более эффектной, чем первая. Но и эта стрела не смогла выбраться из леса. «Последний раз!» — крикнул Влад, снова потянувшись к колчану. Но тут вы остановили его. Опасаясь, что у Влада закончатся стрелы, вы решили найти оптимальный угол, под которым ему следует стрелять. И поэтому вы достали компьютер из своего рюкзака, готовые решить эту задачу в стиле UJ TCS.

Влад стоит на декартовой плоскости в точке $(0, 0)$. Точки $(0, 1)$ и $(1, 0)$ находятся ровно в 1 метре от Влада. Всего есть $N$ деревьев, пронумерованных от $1$ до $N$, и дерево с номером $i$ представлено вертикальным отрезком, соединяющим точки $(x_i, 0)$ и $(x_i, y_i)$ для некоторых положительных целых чисел $x_i$ и $y_i$. Когда Влад стреляет под углом $\alpha$, его стрела получает начальную горизонтальную скорость $v_x = C \cdot \cos(\alpha)$ и начальную вертикальную скорость $v_y = C \cdot \sin(\alpha)$. На стрелу не влияет сопротивление воздуха, и ее траектория представляет собой параболу (точнее, горизонтальная скорость $v_x$ остается постоянной на протяжении всего полета, в то время как $v_y$ линейно уменьшается с потерей $g$ метров в секунду за секунду), проходящую через точку $(0, 0)$. Мы предполагаем, что ускорение свободного падения равно $g = 10 \, \text{м/с}^2$. Цель Влада будет достигнута, если траектория выпущенной им стрелы не пересекает ни одно из деревьев (или, точнее, интервалы, представляющие их) ни в какой точке. Кроме того, траектория стрелы должна пересекать ось $x$ в точке, координата $x$ которой больше, чем у любого дерева.

Выведите возможное значение $\tan(\alpha)$, которое позволит Владу выполнить эти условия.

Входные данные

Первая строка входных данных содержит количество тестовых случаев $z$. Далее следуют описания тестовых случаев.

Первая строка каждого случая состоит из целого числа $1 \le C \le 10^9$, которое является скоростью стрелы Влада в метрах в секунду.

Вторая строка каждого случая содержит единственное целое число $1 \le N \le 100\,000$ — количество деревьев.

Для каждого случая следующие $N$ строк содержат по два целых числа $x_i, y_i$ ($1 \le x_i, y_i \le 10^9$). $i$-е дерево представлено вертикальным отрезком между точками $(x_i, 0)$ и $(x_i, y_i)$.

Сумма $N$ по всем тестовым случаям не превышает $300\,000$.

Выходные данные

Для каждого случая выведите одно число ровно с 3 знаками после десятичной точки. Оно должно приближать одно из правильных значений $\tan(\alpha)$ с погрешностью не более $10^{-3}$. Вы можете предположить, что решения всегда существуют и что любое правильное значение $\tan(\alpha)$ содержится в интервале решений длиной не менее $10^{-2}$.

Примеры

Входные данные 1

3
5
1
1 1
5
1
1 1
13
1
7 7

Выходные данные 1

2.000
3.000
2.429

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.