#include <bits/stdc++.h>
using namespace std;
int main() {
  double a, v;
  double l, d, w;
  scanf("%lf%lf", &a, &v);
  scanf("%lf%lf%lf", &l, &d, &w);
  double t = sqrt((2.0 * d) / a * 1.0);
  double V = a * 1.0 * t;
  V = min(V, v);
  if (V <= w) {
    double tt = (v - 0) / a;
    double tot = 0;
    double xt = (a * tt * tt) / 2;
    if (xt <= l) {
      tot = tt + (l - xt) / v;
    } else {
      double vt = sqrt(2.0 * a * l);
      tot = (vt - 0) / a;
    }
    printf("%.10lf\n", tot);
    return 0;
  }
  double t1 = (v - 0) * 1.0 / a;
  double t2 = (v - w) * 1.0 / a;
  double xx = v * t1 / 2.0 + (v + w) * t2 / 2.0;
  double tsum = 0;
  if (xx <= d) {
    tsum = t1 + t2;
    double dis = d - xx;
    tsum += dis * 1.0 / v;
    double t3 = (v - w) / a;
    double x3 = (v * v - w * w) / (2.0 * a);
    if (x3 <= (l - d)) {
      tsum += t3;
      double x4 = l - d - x3;
      tsum += (x4 / v);
    } else {
      double v3 = sqrt(w * w + 2.0 * a * (l - d));
      double t4 = (v3 - w) / a;
      tsum += t4;
    }
  } else if (xx > d) {
    double v1 = sqrt((w * w / 2.0) + a * d);
    double t3 = (v1 - 0) * 1.0 / a + (v1 - w) * 1.0 / a;
    tsum = t3;
    double t4 = (v - w) * 1.0 / a;
    double x4 = (w + v) * t4 / 2.0;
    if (x4 <= (l - d)) {
      tsum += t4;
      tsum += (l - d - x4) / v;
    } else if (x4 > (l - d)) {
      double v2 = sqrt(w * w + 2 * a * (l - d));
      double t5 = (v2 - w) / a;
      tsum += t5;
    }
  }
  printf("%.10lf\n", tsum);
}
