Simplemente salta


Submit solution


Points: 100 (partial)
Time limit: 3.0s
Memory limit: 128M

Authors:
Problem type
Allowed languages
Ada, BrainF***, C, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Prolog, Python, Swift, VB

Tienes N puntos en el plano y puedes "saltar" entre cualquier par de ellos. El valor de un salto es la distancia Euclidiana entre ese par de puntos, es decir el valor x (x >= 0) que satisface:

x * x = (x1-x2) * (x1-x2) + (y2-y1) * (y2-y1)

donde (x1, y1) y (x2, y2) son los dos puntos. Un camino es una secuencia de puntos y de el nos interesa el menor valor de salto entre cualquier par de puntos consecutivos, llamemos le a eso v de un camino.

Tenemos dos puntos de esos N, que son U y V, y queremos saber el mayor v de un camino que empiece en U y termine en V. Ah, y nos vamos a preguntar eso mucho, mas exactamente Q veces. Si U y V son iguales, entonces eso que queremos saber vale -1.

Entrada

Linea 1-N Q (N y Q separados por un espacio).

Lineas 2 .... N+1-X_i Y_i (Las coordenadas del i-esimo punto)

Lineas N+2 .... N+Q+1-U_i V_i (Los puntos, U_i y V_i son los indices de esos puntos en la entrada)

Salida

Linea 1 .... Q-X_i (El mayor v de ..... , deben imprimirlo todo con 2 lugares decimales)

Ejemplo entrada

3 3
0 0
0 1
2 0
1 2
3 3
2 3

Ejemplo de salida

2.00
-1
2.24

Restricciones

0 \le X_i, Y_i < 10^9

Subtarea 1. 15 puntos

5 \le N \le 10

5 \le Q \le 20

Subtarea 2. 30 puntos

N = 100

Q = 100

Subtarea 3. 55 puntos

N = 1000

Q = 100000


Comments

There are no comments at the moment.