#include #include #include using namespace std; double Tf, Vf, Hf, Td, Vd, Hd; constexpr double eps = 1e-9; double solve(){ const double landing_time = sqrt(2 * Hf); if(Vd <= Vf + eps) return Td + 2 * Vf * landing_time / Vd; const double catch_time = Td * Vd / (Vd - Vf); if(catch_time >= landing_time - eps) return Td + 2 * Vf * landing_time / Vd; double l = max(catch_time, sqrt(2 * (Hf - Hd))); double r = landing_time; for(int i=0;i<150;++i) { double m = (l+r)/2; double h = Hf - m*m/2; double jmpt = sqrt(2.0/3.0) * (sqrt(Hd) - sqrt(Hd - h)); if(m - jmpt > Td) r = m; else l = m; } return l * (1.0 + Vf / Vd); } int main(){ cin >> Tf >> Vf >> Hf >> Td >> Vd >> Hd; Td -= Tf; cout << fixed << setprecision(12) << Tf + solve() << '\n'; }