#include <bits/stdc++.h>
using namespace std;
vector<double> solve(double a, double b, double c) {
  b /= 2;
  double d = b * b - a * c;
  if (d < 0) {
    return {};
  }
  if (d == 0) {
    return {-b / a};
  }
  double s = sqrt(d);
  double x0 = (-b - s) / a;
  double x2 = (-b + s) / a;
  return {x0, x2};
}
int main() {
  double a, v, l, d, w;
  cin >> a >> v >> l >> d >> w;
  double t0 = v / a;
  double t1 = w / a;
  double ret = 0;
  if (t0 > t1 && a * t1 * t1 / 2 < d) {
    ret += t1;
    double r = d - a * t1 * t1 / 2;
    auto xs = solve(a / 2, w, -r / 2);
    double t3 = (v - w) / a;
    if (t3 > xs.back()) {
      ret += xs.back() * 2;
    } else {
      ret += t3 * 2;
      double r2 = r - 2 * (w * t3 + a * t3 * t3 / 2);
      ret += r2 / v;
    }
    double r3 = l - d;
    if (w * t3 + a * t3 * t3 / 2 > r3) {
      auto ys = solve(a / 2, w, -r3);
      ret += ys.back();
    } else {
      ret += t3;
      r3 -= (w * t3 + a * t3 * t3 / 2);
      ret += r3 / v;
    }
  } else {
    if (a * t0 * t0 / 2 <= l) {
      ret += t0;
      ret += (l - a * t0 * t0 / 2) / v;
    } else {
      ret += sqrt(2 * l / a);
    }
  }
  printf("%.10lf\n", ret);
  return 0;
}
