#include <bits/stdc++.h>
using namespace std;
int main() {
  double a, v, l, d, w;
  cin >> a >> v;
  cin >> l >> d >> w;
  double res = 0;
  if ((v * v) / (2 * a) >= d) {
    double vd = sqrt(2 * d * a);
    if (vd > w) {
      vd = sqrt(a * d + w * w / 2);
      res += 2 * vd / a - w / a;
      vd = w;
    } else {
      res += vd / a;
    }
    if ((v * v) / (2 * a) - (vd * vd) / (2 * a) >= l - d) {
      res += (sqrt(vd * vd + 2 * a * (l - d)) - vd) / a;
    } else {
      res += (v - vd) / a;
      double dis = l - d + (vd * vd) / (2 * a) - (v * v) / (2 * a);
      res += dis / v;
    }
  } else {
    if (v <= w) {
      res += v / a + (l - v * v / (2 * a)) / v;
    } else {
      if (d > v * v / a - w * w / (2 * a)) {
        double tmp = d + w * w / (2 * a) - v * v / a;
        res += 2 * v / a - w / a + tmp / v;
      } else {
        double vd = sqrt(d * a + w * w / 2);
        res += 2 * vd / a - w / a;
      }
      if (v * v / (2 * a) - w * w / (2 * a) >= l - d) {
        res += (sqrt(w * w + 2 * a * (l - d)) - w) / a;
      } else {
        res += (v - w) / a;
        double dis = l - d + w * w / (2 * a) - v * v / (2 * a);
        res += dis / v;
      }
    }
  }
  cout << std::fixed << std::setprecision(9) << res << endl;
  return 0;
}
