#include <bits/stdc++.h>
using namespace std;
int main(int argc, char **argv) {
  ifstream from;
  const long long nmin = 1, nmax = 10000;
  long long n, m, mt, res, rt, i, j, k, t, ax, a, x0, x1, vmax, w;
  long double dt;
  if (0) from.open("test.txt");
  cin >> a >> vmax;
  cin >> x1 >> x0 >> w;
  dt = 0.0;
  if ((vmax <= w) || (w * w >= 2 * x0 * a)) {
    if (vmax * vmax > 2 * x1 * a)
      dt = sqrt(2.0 * x1 / a);
    else
      dt = 1.0 * x1 / vmax + vmax / (2.0 * a);
  } else {
    if (2 * vmax * vmax > 2 * x0 * a + w * w)
      dt = 2.0 * sqrt(1.0 * x0 * a + w * w / 2.0) / a - 1.0 * w / a;
    else
      dt = 1.0 * x0 / vmax + 1.0 * (vmax - w) / a + w * w / (2.0 * a * vmax);
    if (vmax * vmax > 2 * (x1 - x0) * a + w * w)
      dt += sqrt(2.0 * (x1 - x0) * a + w * w) / a - 1.0 * w / a;
    else
      dt += 1.0 * (x1 - x0) / vmax + (vmax - w) * (vmax - w) / (2.0 * a * vmax);
  }
  cout.precision(12);
  cout << fixed << dt << endl;
  return 0;
}
