#include <bits/stdc++.h>
using namespace std;
const long long mod = (long long)(1e9 + 7);
long long modpow(long long a, long long b) {
  if (!b) return 1;
  a %= mod;
  return modpow(a * a % mod, b / 2) * (b & 1 ? a : 1) % mod;
}
int vmax, a;
long double distance_travel(long double speed, long double time) {
  long double ttm = (vmax - speed) / a;
  if (ttm < time)
    return speed * ttm + 1.00 / 2 * a * ttm * ttm + vmax * (time - ttm);
  return speed * time + 1.00 / 2 * a * time * time;
}
long double time_taken(long double speed, long double distance) {
  long double ttm = (vmax - speed) / a;
  long double d = distance_travel(speed, ttm);
  if (d <= distance)
    return ttm + (distance - d) / vmax;
  else
    return (-speed + sqrt(speed * speed + 2 * a * distance)) / a;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> a >> vmax;
  double l, d, w;
  cin >> l >> d >> w;
  double ans = 0;
  if (w >= vmax)
    ans = time_taken(0, l);
  else {
    long double ttm = w / a;
    long double dist = distance_travel(0, ttm);
    if (dist > d)
      ans = time_taken(0, l);
    else
      ans = ttm + 2 * time_taken(w, (d - dist) / 2.00) + time_taken(w, l - d);
  }
  printf("%.6llf", ans);
  return 0;
}
