요즈음은 노인, 장애인, 어린이들과 같은 교통 약자들이 쉽게 이용할 수 있도록 계단이 없이 바닥이 낮은 저상 버스가 널리 보급되어 있다. 사람들이 내리는데 쓰는 저상버스의 뒷문은, 휠체어를 탄 사람이 안전하고 쉽게 내릴 수 있도록 문이 미끄러지는 식으로 열리고 닫히도록 만들어져 있다.
위 그림은 저상 버스의 문이 열리고 닫히는 모양을 설명하고 있다. 두 개의 문은 길이가 인 굵은 선으로 표현되어 있으며, (a)는 문이 열린 모습이다. 이 문은 미끄러지듯이 (b)를 거쳐서 (c)의 모양으로 닫히게 된다. 문의 두께는 고려하지 않는다.
문이 열리는 방식이 보통 문과 다르기 때문에, 문에 서 있는 위치에 따라서 움직이는 문에 부딪힐 수도 있고, 부딪히지 않을 수도 있다. 안전을 위해서는 문에 부딪히지 않는 곳에 서 있는 것이 좋다.
예를 들어, 위와 같이 문을 움직인다고 할 때 아래 그림의 (d), (e)의 경우는 점으로 표현된 사람이 문에 부딪히는 경우이며, (f)의 경우는 문에 부딪히지 않아 안전한 경우이다.
사람의 위치가 주어졌을 때, 이 사람이 문에 부딪힐 지, 부딪히지 않을 지 알려주는 프로그램을 작성하시오.
첫째 줄에 문의 길이를 나타내는 실수 이 주어진다. ()
다음 줄에는 사람이 서 있는 위치의 좌표를 나타내는 두 실수 , 가 주어진다. (, ) 원점은 그림 (a)에서 왼쪽 문의 가장 아래 끝점으로 간주하고, 수평 방향으로 만큼, 수직 방향으로 만큼 떨어진 위치에 사람이 서 있다. 이 사람이 서있으면서 차지하는 면적은 무시할 수 있다. 즉, 사람을 이 위치의 점 하나로 간주할 수 있다.
부딪히는지 여부를 판정할 때 주의할 점은, 만약 사람이 움직이는 문에 부딪히지 않는다면 최소한 이상 거리를 두고 떨어져 있도록 입력이 주어진다. 즉, 이내의 실수 오차로 SAFE
와 DANGER
가 바뀌는 경우가 없도록 입력이 주어진다. 이를 위해서, 여러분이 사용하는 프로그래밍 언어에서 비트 실수형을 사용하자. 예를 들어, C/C++ 언어를 사용한다면, float
대신 double
을 사용한다.
출력은 한 줄로 구성된다. 만약 사람이 움직이는 문에 부딪힌다면 첫 줄에 DANGER
를 출력한다. 만약 그렇지 않다면, SAFE
를 출력한다.
10.234234 0.123123 0.321321
DANGER
이 문제는 별도의 부분 문제가 없으며, 점 혹은 점을 받는 문제이다.