#include <bits/stdc++.h>
using namespace std;
int main() {
  double a, vm, l, x, vl;
  cin >> a >> vm >> l >> x >> vl;
  if (vl >= vm) {
    double x1 = (vm * vm) / (2 * a);
    if (x1 >= l)
      printf("%.5f", sqrt((2 * l) / a));
    else {
      double t1 = vm / a;
      double t2 = (l - (vm * vm) / (2 * a)) / vm;
      printf("%.5f", t1 + t2);
    }
  } else {
    double vn = sqrt(2 * a * x);
    if (vn <= vl) {
      double x1 = (vm * vm) / (2 * a);
      if (x1 >= l)
        printf("%.5f", sqrt((2 * l) / a));
      else {
        double t1 = vm / a;
        double t2 = (l - (vm * vm) / (2 * a)) / vm;
        printf("%.5f", t1 + t2);
      }
    } else {
      double tx = (vm * vm) / (2 * a) + (vm * vm - vl * vl) / (2 * a);
      if (tx >= x) {
        double vx = sqrt(((2 * a * x) + (vl * vl)) / 2.0);
        double t1 = vx / a;
        double t2 = (vx - vl) / a;
        double xn = (vm * vm - vl * vl) / (2 * a);
        if (xn >= l - x) {
          double t3 = (-2 * vl + sqrt(4 * vl * vl + 8 * a * (l - x))) / (2 * a);
          printf("%.5f", t1 + t2 + t3);
        } else {
          double t3 = (vm - vl) / a;
          double t4 = (l - x - ((vm * vm - vl * vl) / (2 * a))) / vm;
          printf("%.5f", t1 + t2 + t3 + t4);
        }
      } else {
        double dx = x - (vm * vm) / (2 * a) - (vm * vm - vl * vl) / (2 * a);
        double t1 = vm / a;
        double t2 = dx / vm;
        double t3 = (vm - vl) / a;
        double xn = (vm * vm - vl * vl) / (2 * a);
        if (xn >= l - x) {
          double t4 = (-2 * vl + sqrt(4 * vl * vl + 8 * a * (l - x))) / (2 * a);
          printf("%.5f", t1 + t2 + t3 + t4);
        } else {
          double t4 = (vm - vl) / a;
          double t5 = (l - x - ((vm * vm - vl * vl) / (2 * a))) / vm;
          printf("%.5f", t1 + t2 + t3 + t4 + t5);
        }
      }
    }
  }
}
