Vous programmez un aéroglisseur autonome propulsé par des fusées. Le véhicule peut se déplacer très, très vite, mais il lui est difficile de tourner. Puisqu'il est en sustentation, il tourne en activant des propulseurs directionnels, qui font tourner le véhicule aussi bien lorsqu'il avance que lorsqu'il est immobile.
Le désert de sel où vous effectuez vos essais a été cartographié à l'aide d'une grille cartésienne $\text{2D}$. L'aéroglisseur part de la position $(0,0)$ sur cette grille, orienté dans la direction positive de l'axe $X$. Votre tâche consiste à amener le véhicule à une autre position $(x,y)$ du désert de sel.
L'aéroglisseur a une vitesse au sol fixe de $v$ miles par seconde et une vitesse de rotation fixe de $w$ radians par seconde. Grâce à la puissance des fusées, tant pour accélérer que pour ralentir, il peut atteindre sa vitesse maximale quasiment instantanément et s'arrêter depuis cette vitesse tout aussi rapidement. De même, il peut commencer à tourner à sa vitesse de rotation fixe instantanément et arrêter de tourner tout aussi rapidement. Il peut tourner dans le sens horaire ou antihoraire.
Vous devez déterminer le temps minimal nécessaire pour que le véhicule atteigne sa cible. Le programme qui contrôle le véhicule peut démarrer le mouvement vers l'avant, arrêter ce mouvement, démarrer la rotation et arrêter la rotation, chaque action exactement une fois. Notez que le démarrage ou l'arrêt du mouvement vers l'avant peut être indépendant du démarrage ou de l'arrêt de la rotation.
Entrée
Chaque cas de test comporte exactement deux lignes.
La première ligne contient deux entiers séparés par un espace, $x$ et $y$ ($−1,000 \leq x, y \leq 1,000,(x,y)\ne(0,0)$), qui indiquent la position sur la grille du désert de sel que vous cherchez à atteindre, en miles.
La deuxième ligne de l'entrée contient deux nombres réels séparés par un espace et ayant exactement deux chiffres après la virgule : $v$ ($0.01 \leq v \leq 10.00$) et $w$ ($0.01 \leq w \leq 10.00$), où $v$ est la vitesse de déplacement fixe en miles par seconde et $w$ est la vitesse de rotation fixe dans l'un ou l'autre sens, en radians par seconde.
Sortie
Affichez un seul nombre réel : le temps minimal (en secondes) nécessaire pour que l'aéroglisseur aille de $(0,0)$ à $(x,y)$ en respectant les contraintes. Votre réponse sera acceptée si son erreur absolue ne dépasse pas $10^{−3}$.
Exemples
Entrée 1
20 0
1.00 0.10
Sortie 1
20.00000000
Entrée 2
-10 10
10.00 1.00
Sortie 2
3.14159265
Entrée 3
0 20
1.00 0.10
Sortie 3
28.26445910
Entrée 4
-997 -3
5.64 2.15
Sortie 4
177.76915187