Walker da una oportunidad P49829


Statement
 

pdf   zip

Con frecuencia, el Ranger Walker se encuentra en la situación en la que acorrala a un delincuente y le apunta con la pistola, mientras el malechor alza las manos en señal de rendición. Walker sabe que a continuación lo detendrá, luego será juzgado, y quizás pasará un tiempo en la trena. Como consecuencia, el detenido no recibirá lo que realmente se merece: una buena paliza.

Sin embargo, Walker tiene un método para solucionar esta grave injusticia. Lo que suele hacer es acercar su mano con la pistola lo suficientemente al delincuente como para que éste vea la posibilidad de darle una patada en la mano, dejándole así desarmado. Una vez hecho esto, el malechor se lanza como un loco sobre Walker, creyendo que le ha pillado por sorpresa. Nada más lejos de la realidad, pues todo estaba planeado, y al pobre desgraciado le espera un menú de patadas y puñetazos. Walker no está dando una oportunidad a ese desdichado. Se está dando la oportunidad a sí mismo de impartir justicia.

Trivette está muy interesado en el método, aunque todavía no tiene muy controlado el tema de las distancias. Tu misión es escribir un programa que, dada la posición del delincuente, calcule la posición en que debe posicionarse Trivette para que su mano con la pistola pueda recibir una patada.

Tanto el delincuente como Trivette se encuentran en el plano (x,y)(x,y), donde xx se interpreta como horizontal, e yy se interpreta como vertical. El delincuente está en la posición horizontal dd, y Trivette se encuentra a su derecha, y le apunta con la pistola. La pierna del delincuente tiene longitud pp, y rota desde la cintura. Más concretamente, el conjunto de puntos alcanzables por la pierna son aquellos que distan pp de la coordenada (d,p)(d,p) y cuya coordenada horizontal es mayor que dd (ya que mira hacia la derecha). Por otro lado, el hombro de Trivette está a altura hh, y coincide con la altura de la mano con la pistola. La longitud del brazo de Trivette es bb. Por tanto, la pistola se encuentra a altura hh, y a distancia horizontal bb de la posición de Trivette. El objetivo es determinar la posición horizontal tt de Trivette tal que el delincuente pueda darle una patada en la mano.

image

Entrada

La entrada consta de un entero en una línea con el número de casos (como mucho 100100). Cada caso viene descrito en una línea, donde encontramos los enteros dd, pp, hh y bb, que són la descripción en centímetros de los datos del problema, y cumplen 0d10000\leq d\leq 1000, 1p1501\leq p\leq 150, 1h2p11\leq h\leq 2p-1, 0b2000\leq b\leq 200.

Salida

Para cada caso, escribe un número real tt, la solución del problema en centímetros, con exactamente cuatro cifras decimales de precisión, redondeado al número más cercano.

Public test cases
  • Input

    8
    0 100 100 100
    10 100 100 100
    0 100 1 0
    0 100 199 0
    0 100 100 0
    0 100 150 0
    0 100 14 0
    0 100 13 0
    

    Output

    200.0000
    210.0000
    14.1067
    14.1067
    100.0000
    86.6025
    51.0294
    49.3052
    
  • Information
    Author
    Guillem Godoy
    Language
    Spanish
    Official solutions
    C++
    User solutions
    C++