source_code: import java.io.*;
  import java.util.*;
  
  public class Solution {
  	
  	private BufferedReader in;
  	private PrintWriter out;
  	private StringTokenizer st;
  
  	void solve() throws IOException {
  		double a = nextDouble();
  		double v = nextDouble();
  		double l = nextDouble();
  		double d = nextDouble();
  		double w = nextDouble();
  		if (w > v) {
  			w = v;
  		}
  		double ans1 = 0.;
  		double v1;
  		{
  			double l_ = 0., r_ = 1e+9;
  			for (int it = 0; it < 100; ++it) {
  				double mid = (l_ + r_) / 2.;
  				double V = a * mid;
  				double t1 = (V + w) / 2. / a;
  				double t2 = mid - t1;
  				t1 = Math.min(t1, v / a);
  				t2 = Math.min(t2, (v - w) / a);
  				if (V < w) {
  					t1 = mid;
  					t2 = 0.;
  				}
  				double dist = t1 * t1 * a / 2. + t2 * (w + t2 * a / 2.) + v * (mid - t1 - t2);
  				if (dist < d) {
  					l_ = mid;
  				} else {
  					r_ = mid;
  				}
  			}
  			ans1 = (l_ + r_) / 2.;
  			v1 = Math.min(ans1 * a, w);
  		}
  		double ans2 = 0.;
  		{
  			double tSp = (v - v1)  / a;
  			double l_ = 0., r_ = 1e+9;
  			for (int it = 0; it < 100; ++it) {
  				double mid = (l_ + r_) / 2.;
  				double dist = Math.min(tSp, mid) * (v1 + Math.min(tSp, mid) * a / 2.);
  				dist += (mid - Math.min(tSp, mid)) * v;
  				if (dist < l - d) {
  					l_ = mid;
  				} else {
  					r_ = mid;
  				}
  			}
  			ans2 = (l_ + r_) / 2.;
  		}
  		out.println(ans1 + ans2);
  	}
  
  	Solution() throws IOException {
  		in = new BufferedReader(new InputStreamReader(System.in));
  		out = new PrintWriter(System.out);
  		
  		eat("");
  		
  		solve();
  		
  		in.close();
  		out.close();
  	}
  	
  	private void eat(String str) {
  		st = new StringTokenizer(str);
  	}
  	
  	String next() throws IOException {
  		while (!st.hasMoreTokens()) {
  			String line = in.readLine();
  			if (line == null) {
  				return null;
  			}
  			eat(line);
  		}
  		return st.nextToken();
  	}
  	
  	int nextInt() throws IOException {
  		return Integer.parseInt(next());
  	}
  	
  	long nextLong() throws IOException {
  		return Long.parseLong(next());
  	}
  	
  	double nextDouble() throws IOException {
  		return Double.parseDouble(next());
  	}
  
  	public static void main(String[] args) throws IOException {
  		new Solution();
  	}
  }
  