QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 512 MB Total points: 100

#854. Arquero Vlad

Statistics

Vlad era un estudiante ejemplar conocido por sus aventuras excepcionales, muchas de las cuales han sido preservadas como problemas para concursos de programación. Pero una vida tan inquieta había agotado a Vlad un poco demasiado. "¡Dondequiera que vaya, solo hay problemas! ¡He terminado!", anunció, justo antes de dejar la universidad, dirigiéndose hacia las montañas Bieszczady.

Vlad alquiló una pequeña cabaña, en la que pasó los primeros meses de sus vacaciones. Pero pronto el aburrimiento comenzó a apoderarse de él, así que Vlad decidió buscarse un pasatiempo: compró un arco, algunas flechas y comenzó su práctica diaria de tiro con arco. Y después de unos meses más de entrenamiento sólido, Vlad alcanzó resultados muy satisfactorios, ya que era capaz de disparar una flecha con una velocidad asombrosa de $C$ metros por segundo. Pero era difícil disfrutar de tales logros sin nadie alrededor.

"¡Mira esto! ¡Me voy a parar aquí mismo y disparar una flecha tan rápido que volará sobre todos y cada uno de esos árboles!", exclamó Vlad hacia ti, un joven programador que decidió visitarlo. Vlad tensó el arco y disparó la primera flecha. Sus plumas se balanceaban en el aire, su punta brillaba en el cielo... pero golpeó un árbol. "¡Espera, déjame intentar de nuevo!"

Su segundo intento fue aún más espectacular que el primero. Pero esta flecha tampoco pudo encontrar su camino fuera del bosque. "¡Una última vez!", gritó Vlad, alcanzando el saco una vez más. Entonces lo detuviste. Temiendo que Vlad se quedara sin flechas, decidiste encontrar un ángulo óptimo al cual debería apuntar. Y así recurriste a la computadora en tu mochila, listo para resolver este problema al estilo UJ TCS.

Vlad se encuentra en un plano cartesiano en el punto $(0, 0)$. Hay $N$ árboles numerados del $1$ al $N$, y el árbol número $i$ está representado por un segmento vertical que conecta los puntos $(x_i, 0)$ y $(x_i, y_i)$ para algunos enteros positivos $x_i$ y $y_i$. Cuando Vlad dispara en un ángulo $\alpha$, esto le da a su flecha una velocidad horizontal inicial $v_x$ igual a $C \cdot \cos(\alpha)$ y una velocidad vertical inicial $v_y = C \cdot \sin(\alpha)$. La flecha no se ve afectada por la resistencia del aire y su trayectoria es una parábola (para ser precisos, su velocidad horizontal $v_x$ permanece constante durante todo el vuelo, mientras que $v_y$ disminuye linealmente con una pérdida por segundo igual a $g$), conteniendo el punto $(0, 0)$. Asumimos que la aceleración debida a la gravedad es $g = 10 \, \text{m/s}^2$. El objetivo de Vlad se alcanzará si la trayectoria de la flecha que disparó no intersecta ninguno de los árboles (o más específicamente, los intervalos que los representan) en ningún punto. Además, la trayectoria de la flecha debe intersectar el eje $x$ en el punto que tiene una coordenada $x$ mayor que cualquier árbol.

Proporciona un valor posible de $\tan(\alpha)$ que permita a Vlad cumplir estas condiciones.

Entrada

La primera línea de la entrada contiene el número de casos de prueba $z$. Siguen las descripciones de los casos de prueba.

La primera línea de cada caso consiste en un entero $1 \le C \le 10^9$, que es la velocidad de la flecha de Vlad en metros/segundo.

La segunda línea de cada caso contiene un único entero $1 \le N \le 100\,000$, el número de árboles.

Para cada caso, las siguientes $N$ líneas contienen dos enteros $x_i, y_i$ ($1 \le x_i, y_i \le 10^9$) cada una. El $i$-ésimo árbol está representado por un segmento vertical entre los puntos $(x_i, 0)$ y $(x_i, y_i)$.

La suma de $N$ en todos los casos de prueba no excede $300\,000$.

Salida

Para cada caso, imprime un único número con exactamente 3 dígitos después del punto decimal. Debe aproximar uno de los valores correctos de $\tan(\alpha)$ con un error no mayor a $10^{-3}$. Puedes asumir que las soluciones siempre existen y que cualquier valor correcto de $\tan(\alpha)$ está contenido en un intervalo de soluciones de longitud al menos $10^{-2}$.

Ejemplos

Entrada 1

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

Salida 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.