Prihlásenie Registrácia  

K - Karambol

Časový limit: 2s, Pamäťový limit: 64MiB

Programovacie jazyky: Pascal, C, C++, Java, C++0x, Python 3

Počet bodov: 1

[ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ]

Pavol a Jozef trénujú hru karambol ("biliard na stole bez dier"), na stole o rozmeroch 10×5 stôp. Ako tréning odrážajú guľu od steny na vyznačený jeden bod. Úlohou hráča je túto guľu „streliť“ tak, aby skončila vo vyznačenom bode, pričom sa ale musí odraziť aspoň od jednej steny. Jozef sa nevie rozhodnúť, od ktorej steny by mal guľu odraziť, aby prešla čo najmenšiu vzdialenosť (a teda aby čo najľahšie vedel odhadnúť silu, ktorou musí udrieť), a preto potrebuje vašu pomoc!

Úloha

Dané sú súradnice karambolovej gule (ktorú pre účely tejto úlohy považujeme za jediný bod) a cieľového bodu na karambolovom hracom stole, ktorého rohy sa nachádzajú na súradniciach [0;0], [100;0], [100;50] a [0;50] (jednotkou/presnosťou je desatina stopy). Vašou úlohou je vypísať najkratšiu vzdialenosť, ktorú musí guľa prejsť, ak sa odrazí aspoň od jednej steny a skončí v cieľovom bode.

Vstup

Prvý riadok vstupu obsahuje kladné celé číslo T ≤ 2000, určujúce počet vstupných sád. Každý z ďalších T riadkov vstupu obsahuje celé čísla xg, yg, xc, yc určujúce (v tomto poradí) súradnice karambolovej gule a cieľového bodu (0 < xg, xc < 100 a tiež 0 < yg, yc < 50).

Výstup

Pre každú sadu zo vstupu vypíšte minimálnu vzdialenosť, ktorú musí karambolová guľa prejsť. Výsledok uveďte s presnosťou na maximálne osem desatiných miest. Akceptované budú len riešenia, ktorých výsledok sa od správneho výsledku líši najviac o hodnotu 0,001.

Príklad

Vstup:

2
10 30 10 30
20 30 40 30

Výstup:

20
44.72135955