#include #include using namespace std; bool second(double a, double b, double c, double &x1, double &x2) { double D = b*b - 4*a*c; if(D < 0) return false; x1 = (-b+sqrt(D))/(2*a); x2 = c/a/x1; return true; } int main() { long long Tf, Vf, Hf, Td, Vd, Hd; cin >> Tf >> Vf >> Hf >> Td >> Vd >> Hd; double Tf0 = sqrt(2.*Hf) + Tf; double Vdy = sqrt(6.*Hd); double Td0 = sqrt(2./3.*Hd) + Td; double ymn = Tf0; double xmn = Td + (Tf0 - Tf)*Vf/double(Vd); double a, b, c, x1, x2, x; bool res; cerr << Tf0 << "/" << Vdy << "/" << Td0 << " S\n"; cerr << ymn << "/" << xmn << " YX0\n"; a = 1.; b = Tf - Vdy - 3.*Td; c = Hf - Tf*Tf/2. + Td*Vdy + 3./2.*Td*Td; res = second(a, b, c, x1, x2); if(res) { if(Td <= x1 && x1 <= min(Tf0, Td0)) { ymn = min(ymn, x1); } if(Td <= x2 && x2 <= min(Tf0, Td0)) { ymn = min(ymn, x2); } } cerr << x1 << "/" << x2 << "/" << ymn << " Y1\n"; a = -1./2.; b = Tf; c = -1./2.*Tf*Tf + Hf - Hd; res = second(a, b, c, x1, x2); if(res) { if(Td0 <= x1 && x1 <= Tf0) { ymn = min(ymn, x1); } if(Td0 <= x2 && x2 <= Tf0) { ymn = min(ymn, x2); } } cerr << x1 << "/" << x2 << "/" << ymn << " Y2\n"; if(Vd != Vf) { x = (Td*Vd-Tf*Vf)/double(Vd-Vf); if(Td <= x && x <= Tf0) { x = min(xmn, x); } cerr << x << "/" << xmn << " X1\n"; } x = (Td*Vd-sqrt(2*Hf)*Vf)/double(Vd); if(Tf0 <= x) { x = min(xmn, x); } cerr << x << "/" << xmn << " X2\n"; cout.precision(15); if(ymn > xmn) { x = Vf*(ymn - Tf)/Vd; cerr << x << "Yx\n"; cout << ymn + x; } else { x = Vd*(xmn - Td)/Vd; cerr << x << "Xx\n"; cout << xmn + x; } return 0; }