#include <bits/stdc++.h>
int main(int argc, char** argv) {
  double a, v, l, d, w;
  std::cin >> a >> v >> l >> d >> w;
  if (w > v) w = v;
  double s0, s1, s2, s3, s4, s5;
  double t0, t1, t2, t3, t4, t5;
  s0 = w * w / (2 * a);
  if (s0 > l) {
    t0 = sqrt(2 * l / a);
    printf("%f", t0);
    return 0;
  } else if (s0 > d) {
    t0 = sqrt(2 * s0 / a);
    t1 = (v - w) / a;
    s1 = w * t1 + a * t1 * t1 / 2;
    if (s0 + s1 > l) {
      s1 = l - s0;
      if (w >= v)
        t1 = s1 / v;
      else
        t1 = (sqrt(2 * a * l) - w) / a;
      printf("%f", t0 + t1);
    } else {
      s2 = l - s0 - s1;
      t2 = s2 / v;
      printf("%f", t0 + t1 + t2);
    }
    return 0;
  } else
    t0 = w / a;
  t1 = t3 = t4 = (v - w) / a;
  s1 = s3 = s4 = w * t1 + a * t1 * t1 / 2;
  s2 = d - s0 - s1 - s3;
  if (s2 < 0) {
    s1 += s2 / 2;
    s3 += s2 / 2;
    s2 = 0;
    t1 = t3 = (sqrt(w * w + 2 * a * s1) - w) / a;
    t2 = 0;
  } else {
    t1 = t3 = (v - w) / a;
    t2 = s2 / v;
  }
  if (s4 > l - d) {
    s5 = 0;
    s4 = l - d;
    t4 = (sqrt(w * w + 2 * a * s4) - w) / a;
    t5 = 0;
  } else {
    s5 = l - d - s4;
    t5 = s5 / v;
  }
  printf("%f", t0 + t1 + t2 + t3 + t4 + t5);
  return 0;
}
