#include <bits/stdc++.h>
using namespace std;
int main() {
  int a, v, l, d, w;
  cin >> a >> v;
  cin >> l >> d >> w;
  double M = sqrt(2.0 * l / a);
  if (a * M <= v && a * M <= w)
    printf("%.20lf\n", M);
  else {
    double t1 = v * 1.0 / a, t2 = w * 1.0 / a;
    if (v <= w) {
      double ans = t1 + (l - 0.5 * a * t1 * t1) / v;
      printf("%.20lf\n", ans);
    } else {
      double t = sqrt(2.0 * d / a);
      if (t * a <= w) {
        double ans = 0;
        if (M > t1)
          ans = t1 + (l - 0.5 * a * t1 * t1) / v;
        else
          ans = M;
        printf("%.20lf\n", ans);
      } else {
        double ans = t2;
        double dis = 0.5 * t2 * t2 * a + (d - 0.5 * t2 * t2 * a) / 2;
        double tt = sqrt(2.0 * dis / a);
        if (tt * a <= v)
          ans += 2 * (tt - t2);
        else {
          ans = t1 + (v - w) * 1.0 / a;
          double ty = (v - w) * 1.0 / a;
          double dd = 0.5 * a * t1 * t1 + v * ty - 0.5 * a * ty * ty;
          ans += (d - dd) / v;
        }
        double tx = (v - w) * 1.0 / a;
        if (w * tx + 0.5 * a * tx * tx <= l - d) {
          ans += tx;
          ans += (l - d - w * tx - 0.5 * a * tx * tx) / v;
        } else {
          double lx = 0, rx = 1e8, mid;
          while (lx + 1e-8 <= rx) {
            mid = (lx + rx) / 2;
            if (w * mid + 0.5 * a * mid * mid <= l - d)
              lx = mid;
            else
              rx = mid;
          }
          ans += lx;
        }
        printf("%.20lf\n", ans);
      }
    }
  }
  return 0;
}
