import math
a, v = list(map(int, input().split()))
l, d, w = list(map(int, input().split()))
time_to_reach_max = v / a
length_to_reach_max = (v * v) / (2 * a)
velocity_at_sign = math.sqrt(2 * d * a)
if length_to_reach_max <= d:
if v <= w:
print("%.5f" % (time_to_reach_max + ((l - length_to_reach_max) / v)))
else:
TIME_BEFORE_SIGN = 0
velocity_diff = v - w
time_to_reach_diff = velocity_diff / a
length_to_peak_velocity_from_sign = ((velocity_diff * velocity_diff) / (2 * a)) + (w * time_to_reach_diff)
peak_2_from_berland = d - length_to_peak_velocity_from_sign
if peak_2_from_berland >= length_to_reach_max:
TIME_BEFORE_SIGN = time_to_reach_diff + time_to_reach_max + ((peak_2_from_berland - length_to_reach_max) / v)
else:
time_to_reach_w = w / a
length_to_reach_w = (w * w) / (2 * a)
distance_left = d - length_to_reach_w
time_to_sign = (((-1) * w) + math.sqrt((w ** 2) + (a * distance_left))) / a
TIME_BEFORE_SIGN = time_to_reach_w + (2 * time_to_sign)
TIME_AFTER_SIGN = 0
time_to_max = (v - w) / a
length_to_max = (((v - w) * (v - w)) / (2 * a)) + (w * time_to_max)
length_rest = l - d
if length_to_max >= length_rest:
TIME_AFTER_SIGN = (((-1) * w) + math.sqrt((w ** 2) + (2 * a * length_rest))) / a
else:
TIME_AFTER_SIGN = time_to_max + ((length_rest - length_to_max) / v)
print("%.5f" % (TIME_BEFORE_SIGN + TIME_AFTER_SIGN))
else:
if velocity_at_sign <= w:
if length_to_reach_max <= l:
print("%.5f" % (time_to_reach_max + ((l - length_to_reach_max) / v)))
else:
print("%.5f" % (math.sqrt((2 * l) / a)))
else:
time_to_reach_w = w / a
length_to_reach_w = (w * w) / (2 * a)
distance_left = d - length_to_reach_w
time_to_sign = (((-1) * w) + math.sqrt((w ** 2) + (a * distance_left))) / a
TIME_BEFORE_SIGN = time_to_reach_w + (2 * time_to_sign)
TIME_AFTER_SIGN = 0
time_to_max = (v - w) / a
length_to_max = (((v - w) * (v - w)) / (2 * a)) + (w * time_to_max)
length_rest = l - d
if length_to_max >= length_rest:
TIME_AFTER_SIGN = (((-1) * w) + math.sqrt((w ** 2) + (2 * a * length_rest))) / a
else:
TIME_AFTER_SIGN = time_to_max + ((length_rest - length_to_max) / v)
print("%.5f" % (TIME_BEFORE_SIGN + TIME_AFTER_SIGN))
1671D - Insert a Progression | 1671A - String Building |
1671B - Consecutive Points Segment | 1671C - Dolce Vita |
1669G - Fall Down | 4D - Mysterious Present |
1316B - String Modification | 1204A - BowWow and the Timetable |
508B - Anton and currency you all know | 1672A - Log Chopping |
300A - Array | 48D - Permutations |
677C - Vanya and Label | 1583B - Omkar and Heavenly Tree |
1703C - Cypher | 1511C - Yet Another Card Deck |
1698A - XOR Mixup | 1702E - Split Into Two Sets |
1703B - ICPC Balloons | 1702F - Equate Multisets |
1700A - Optimal Path | 665C - Simple Strings |
1708A - Difference Operations | 1703E - Mirror Grid |
1042A - Benches | 1676B - Equal Candies |
1705B - Mark the Dust Sweeper | 1711A - Perfect Permutation |
1701B - Permutation | 1692A - Marathon |