잠수부
시간 제한3초메모리 제한128 MB
밧줄을 따라 위아래로 움직이는 다이버가 삼각파처럼 좌우로 진동하는 상어들과 반경 r 이내로 가까워지지 않으면서 수면까지 도달하는 최소 시간을 구하거나 불가능함을 판정하는 문제입니다.
문제
잠수부가 심해에서의 작업을 마치고 수면으로 올라가려고 합니다. 수면 위 보트에서 잠수부가 있는 수심 피트 지점까지 밧줄이 수직으로 내려와 있으며, 잠수부는 이 밧줄을 따라서만 위아래로 이동합니다.
그런데 작업하는 동안 밧줄 근처에 여러 마리의 상어가 모여들었습니다. 상어들은 아직 잠수부를 위협이나 먹이로 여기지 않지만, 잠수부가 어떤 상어와의 거리가 피트보다 가까워지면 그 상어는 즉시 잠수부를 공격합니다.
잠수병을 피하기 위해 잠수부는 1초에 최대 피트의 속도로만 내려가거나 올라갈 수 있습니다. 또한 수심 피트보다 더 깊이 내려갈 수는 없습니다.

각 상어 는 자신만의 일정한 수심 피트에서 밧줄 근처를 헤엄칩니다. 모든 상어의 속도와 움직임 방식은 동일합니다. 상어는 물속에서 가만히 있을 수 없어 가라앉지 않으려면 계속 헤엄쳐야 하므로, 일정한 속도 로 밧줄에서 최대 피트까지 멀어졌다가 다시 밧줄로 돌아오는 왕복 운동을 반복합니다. 상어가 방향을 바꾸는 것은 매우 빨라 순간적으로 일어난다고 봅니다. 상어가 잠수부를 공격하는 것 역시 매우 빨라, 잠수부가 어떤 상어를 중심으로 반지름 피트인 원 안에 들어오는 순간 즉시 일어난다고 봅니다.
잠수부는 항상 밧줄 위(밧줄로부터의 수평 거리가 )에 있으므로, 잠수부와 상어 사이의 거리는 두 수심의 차이와 상어가 밧줄에서 떨어진 수평 거리를 두 변으로 하는 직각삼각형의 빗변 길이, 즉 입니다.
잠수부가 상어에게 공격받지 않고 수면까지 올라갈 수 있는지, 올라갈 수 있다면 가장 빠르게 걸리는 시간이 얼마인지 구하세요.
입력
입력의 첫 번째 줄에는 정수 6개가 주어집니다.
- () — 잠수부의 처음 수심.
- () — 잠수부의 최대 속도.
- () — 상어의 수.
- () — 상어와 잠수부가 유지해야 하는 최소 안전 거리.
- () — 상어가 밧줄에서 멀어지는 최대 거리.
- () — 상어의 속도.
이어서 개의 줄에 각 상어의 정보가 정수 3개씩 주어집니다.
- () — 번째 상어의 수심.
- () — 번째 상어가 처음에 밧줄에서 떨어져 있는 거리.
- (는 또는 ) — 번째 상어의 처음 이동 방향. 밧줄에서 멀어지는 방향이면 , 밧줄로 다가오는 방향이면 .
처음에 잠수부는 모든 상어로부터 피트보다 멀리 떨어져 있습니다.
출력
잠수부가 수면에 도달할 수 없으면 IMPOSSIBLE을 출력합니다.
도달할 수 있으면 수면까지 올라가는 데 걸리는 최소 시간을 소수점 아래 첫째 자리까지 반올림하여 출력합니다. 반올림은 반올림(round half up) 규칙을 따릅니다.