Prihlásenie Registrácia  

D - Biliard

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

Programovacie jazyky: Pascal, C, C++, Java, C++0x, Python 3.4, Python 3.11

Počet bodov: 1

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

Robinson a Piatok hrajú nasledujúcu zvláštnu hru: Hrá sa na upravenom biliardovom stole bez dier, inak štandardných rozmerov 100×50 palcov, na ktorom je položená jedna biliarová guľa a 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. Robinson 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 biliardovej gule (ktorú pre účely tejto úlohy považujeme za jediný bod) a cieľového bodu na biliardovom stole, ktorého rohy sa nachádzajú na súradniciach [0;0], [100;0], [100;50] a [0;50]. 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 biliardovej 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í biliardová 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 10 20 10
10 10 10 10

Výstup:

22.36067977
20