#include <bits/stdc++.h>
using namespace std;
ifstream fin("1.in");
ofstream fout("1.out");
double a, v, s, d, w;
int main(int argc, char** argv) {
  cout << fixed << setprecision(5);
  cin >> a >> v >> s >> d >> w;
  double fuck = ((w) * (w)) / (2 * a);
  if (w >= v || fuck >= d) {
    double t1 = v / a, l1 = ((v) * (v)) / (2 * a);
    if (l1 >= s) {
      cout << sqrt(s * 2 / a) << endl;
    } else {
      cout << t1 + (s - l1) / v << endl;
    }
    exit(0);
  }
  double s1 = (((v) * (v)) - ((w) * (w))) / (a * 2), t;
  if (s1 > (s - d)) {
    t = ((-(2 * w) + sqrt(((2 * w) * (2 * w)) - 4 * (a) * (-2 * (s - d)))) /
         (2 * (a)));
  } else {
    t = (v - w) / a + ((s - d) - (((v) * (v)) - ((w) * (w))) / (2 * a)) / v;
  }
  double t1, t2;
  t1 = sqrt((d * 2 + (((w) * (w)) / a)) / (2 * a));
  if (t1 * a <= v) {
    t2 = (a * t1 - w) / a;
    cout << t2 + t1 + t << endl;
    exit(0);
  } else {
    t1 = v / a;
    t2 = (v - w) / a;
    double t3 = (d - t1 * v * 0.5 - (v + w) * t2 * 0.5) / v;
    cout << t1 + t2 + t3 + t << endl;
  }
  return 0;
}
