#include using namespace std; typedef long long int LL; typedef double LD; const int MAXN = 1000*1000; const LD EPS = 1e-6; LD Tf, Vf, Hf, Td, Vd, Hd; LD delta; bool Check(LD t){ LD s1 = (t+delta)*(t+delta)/2.0; LD s2 = min(Hd, 1.5*t*t); return s1+s2 >= Hf; } int main(){ scanf("%lf %lf %lf %lf %lf %lf", &Tf, &Vf, &Hf, &Td, &Vd, &Hd); delta = Td - Tf; if(Vf + EPS > Vd){//sprawdzone LD Tfall = sqrt(2.0*Hf); printf("%.9lf\n", 2.0*Tfall*Vf/Vd + Td); return 0; } LD T = delta*Vf/(Vd-Vf); LD Tfall = sqrt(2.0*Hf); if(Tfall - delta <= T){ printf("%.9lf\n", 2.0*Tfall*Vf/Vd + Td); //printf("chuj"); return 0; } LD A = T, B = Tfall-delta, t = 0.0; //printf("%lf %lf\n", A, B); for(int i=0; i<100000; i++){ t = (A+B)/2.0; if(Check(t)) B = t; else A = t; } t = (A+B)/2.0; //printf("%.9lf\n", t); //printf("%.9lf\n", 2.0*(delta+t)*Vf/Vd + Td); printf("%.9lf\n", Td + t + (delta+t)*Vf/Vd); //printf("%.9lf\n", Td + t + (t)*Vf/Vd); return 0; }