만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

충돌 경보

시간 제한1초메모리 제한1024 MB

요약
격자 위에서 당신과 각 유령의 시작 위치와 이동 방향이 주어질 때, 당신이 어떤 유령과 가장 먼저 만나는 시각을 구하고 만나지 않으면 SAFE를 출력합니다.
난이도

보통10점 중 4점

유형
수학, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

당신은 가까스로 저주받은 저택에서 빠져나왔다. 남은 장애물은 정사각형 들판 하나뿐이다. 들판은 완전히 평평하니 건너기 쉬워 보이지만, 들판에는 유령이 가득하다.

출발할 때(t=0t = 0초) 당신과 각 유령은 정수 좌표에 있다. 들판의 중심은 (0,0)(0, 0)이다. 어떤 유령도 당신이나 다른 유령과 같은 위치에서 시작하지 않는다.

당신과 유령은 들판의 변과 평행한 직선으로만 움직일 수 있다. 모두가 같은 방향으로 가는 것은 아니다. 모든 유령은 당신과 크기가 같다. 당신과 유령은 한번 출발하면 방향을 바꿀 수 없다.

당신과 유령은 동시에 출발하며, 모두 일정한 속력 1 단위/초로 움직인다.

유령끼리는 서로 통과할 수 있고, 통과해도 속력과 방향은 변하지 않는다. 유령이 들판의 경계를 넘으면 들판 밖으로 나가며, 그 뒤로는 충돌이 일어날 수 있는 공간에 속하지 않는다.

당신과 각 유령의 시작 위치와 방향이 주어졌을 때, 당신이 유령 중 하나와 처음 충돌하는 시각을 구하라. 어떤 유령과도 충돌하지 않으면 SAFE를 출력한다.

입력

첫 줄에 테스트 케이스 수 TT (1≤T≤101 \le T \le 10)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

테스트 케이스의 첫 줄에는 X Y DIR이 주어진다. (X,Y)(X, Y)는 당신의 시작 위치이고 (−100≤X,Y≤100-100 \le X, Y \le 100), DIR은 이동 방향이다. DIR은 N(북, Y가 양의 방향), S(남, Y가 음의 방향), E(동, X가 양의 방향), W(서, X가 음의 방향) 중 하나다.

다음 줄에는 유령의 수 GG (1≤G≤20121 \le G \le 2012)가 주어진다. 이어서 GG개의 줄에 각 유령의 시작 위치와 이동 방향이 X Y DIR 형식으로 주어진다. 제약은 당신의 경우와 같다.

출력

각 테스트 케이스마다 당신이 유령과 충돌하는 가장 이른 시각을 초 단위로 출력한다. 소수점 아래 한 자리로 반올림한다. 어떤 유령과도 충돌하지 않으면 SAFE를 출력한다.

예제1

  1. 예제 1

    입력
    3
    -3 2 E
    2
    -2 3 S
    -2 0 N
    0 0 E
    1
    3 0 W
    1 1 N
    1
    1 0 N
    
    예상 출력
    1.0
    1.5
    SAFE