프로그램 명: car_race
제한시간: 1 초

2020년, atomically energized cars(원자력차)가 나온다. 지금 자동차경주와는 다르게 연료주입의 문제는 레이스팀들에게 영향을 주지 않는다. 대신에, 중요한 것은 타이어의 문제다.

팀들은 타이어를 어디에서 교체해야 할 것인지 신중하게 고려해야한다.

레이스코스는 n개의 체크포인트를 가진 코스이며, 체크포인트들의 출발점으로부터의 거리는 a1,a2, ... , an(단위 : Km)이다. n번째의 체크포인트가 골지점이다.

각 팀들은, i번째 체크포인트에서 (i < n) 타이어를 바꿀 수 있다. 바꾸지 않아도 상관없다.

타이어를 바꾸는데는 b초의 시간이 걸리며, (멈추는 시간이나 가속하는 시간도 포함한다) 바꾸지 않을시에는 체크포 인트에서 소비하는 시간은 없다. 타이어를 바꾸고 얼마 안된 차들은 그다지 빨리 달릴 수 없는데, 타이어의 온도가 이 타이어의 최적온도보다 낮기 떄문이다.

타이어를 바꾸지 않고 오래 달려도 그다지 빨리 달릴 수 없는데, 마모된 타이어는 도로의 표면을 제대로 밀지 못하기 때문이다.

x킬로미터에서 x+1킬로미터로 가는데 걸리는 시간은 다음 식을 따른다.(초단위).

x는 타이어를 바꾼 체크포인트나 시작지점에서 현재지점까지의 거리고 r,v,e,f는 입력데이터에 주어진다.

1/(v - e * (x - r)) (if x >= r) 

1/(v - f * (r - x)) (if x < r)
문제는 골지점까지의 시간을 최소로 할 수 있는 최선의 수단을 알아낼 수 있는 프로그램을 만드는 것이다.

입력

입력데이터는 여러개의 데이터로 이루어져 있고 각 데이터는 레이스의 상황과 같다. 입력의 형식은 다음과 같다.
n 
a1 a2 . . . an 
b 
r v e f 
입력된 문자는 위에서 설명했다. 만약 한줄에 2개 이상의 입력이 들어올시 공백으로 나눈다.

n은 100을 넘지 않는 양의 정수다. 각 a1, a2, ..., 그리고 an 은 다음을 만족하는 양의 정수이다. 0 < a1 < a2 < . . . < an <= 10000.

b 는 100.0을 넘지 않는 10진수 실수이다. r 은 다음을 만족하는 음이 아닌 정수이다. 0 <= r <= an - 1.

각 v, e , f 는 양의 10진수 실수이다. v - e * (an - 1 - r) >= 0.01 이고 v - f * r >= 0.01 라는 사실을 알수 있다.

입력의 끝은 0으로 표시된다.

출력

각 입력의 한 데이터케이스마다, 10진수의 실수 하나가 한줄에 나와야 한다. 그 수는 최선의 방법으로 체크포인트들을 처리했을때, 골지점까지 걸린 시간이다.(단위는 초).

출력에는 그 실수 이외에는 공백과 같은 다른 어떠한 문자도 있어서는 안된다.

오차가 0.001보다 크지 않은 소수점 뒷자리수도 출력해아 한다.

입출력 예

입력

2
2 3
1.0
1 1.0 0.1 0.3
5
5 10 15 20 25
0.15
1 1.0 0.04 0.5
10
1783 3640 3991 4623 5465 5481 6369 6533 6865 8425
4.172
72 59.4705 0.0052834 0.0611224
0

출력

3.5397
31.9249
168.6682
출처:Japan 2005

[질/답] [제출 현황] [푼 후(1)]
[ 채 점 ] [홈으로]  [뒤 로]