#include #include static double quad_zeros(double a, double b, double c, double d) { return (-b + d * sqrt(b * b - 4 * a * c)) / (2 * a); } int main() { double tf = 0, vf = 0, hf = 0, td = 0, vd = 0, hd = 0; scanf("%lf %lf %lf %lf %lf %lf", &tf, &vf, &hf, &td, &vd, &hd); double df = td - tf; double tj = sqrt(3 * hd / 2); double vj = sqrt(6 * hd); double t0f = sqrt(2 * hf); double xf = vf * t0f; double t0c = (xf / vd) + df; double t0d = (df * vd) / (vd - vf); if (t0d >= df && t0d < t0c) { double solv2 = quad_zeros(1, - (2 * df + vj), hf - df * df, -1); if (solv2 > tj) solv2 = tj; double t1 = solv2 + df; double t0 = (t0d < t1 ? t1 : t0d); double x1 = (t0 - tf) * vf; double t2 = x1 / vd; printf("%.8f\n", t0 + t2 + tf); } else { printf("%.8f\n", t0c + (xf / vd) + tf); } return 0; }