여기서 거기로 갈 수 없어요

면접 대비

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

요약
직사각형 격자 안에서 대각선으로 움직이며 가장자리에서 반사되는 점이 A에서 출발해 B에 도달하는지, 도달한다면 몇 번 이동 후 처음 도달하는지 구한다.
난이도

보통10점 중 4점

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

문제

어느 원시적인 비디오 게임에서 점 하나가 직사각형 격자 안을 튕겨 다닙니다. 격자의 남서쪽(SW) 모서리는 좌표 (0,0)(0, 0)이고 북동쪽(NE) 모서리는 (r,c)(r, c)이며, 0<r≤100 < r \le 10, 0<c≤100 < c \le 10입니다. 따라서 남동쪽(SE) 모서리는 (0,c)(0, c), 북서쪽(NW) 모서리는 (r,0)(r, 0)입니다. 즉 첫 번째 좌표는 남쪽에서 북쪽으로 00부터 rr까지, 두 번째 좌표는 서쪽에서 동쪽으로 00부터 cc까지 커집니다.

점은 항상 대각선으로, 한 번에 한 칸씩, NE, NW, SE, SW 네 방향 중 하나로 움직입니다. 격자의 바깥 변은 거울처럼 작동하여, 점이 변에 닿으면 일반적인 반사 법칙에 따라 튕겨 나갑니다. 예를 들어 NE 방향으로 이동하던 점이 동쪽 변에 부딪히면 방향이 NW로 바뀝니다. 점이 모서리에 닿으면 정반대 방향으로 되돌아갑니다.

격자 크기, 격자 위의 두 점 AA와 BB, 그리고 처음 이동 방향이 주어질 때, AA에서 출발한 점이 BB에 도달하는지, 도달한다면 처음으로 BB에 닿기까지 몇 칸을 이동하는지 구하세요.

입력

첫 줄에는 데이터 집합의 개수 nn이 주어집니다. 각 데이터 집합은 네 줄로 이루어집니다.

  • 격자 크기 rr과 cc가 적힌 줄;
  • 점 AA의 좌표가 적힌 줄;
  • 점 BB의 좌표가 적힌 줄;
  • 처음 이동 방향 NE, NW, SE, SW 중 하나가 적힌 줄.

각 점은 한 줄에 두 정수로 주어지며, 모서리 좌표와 같은 순서, 즉 첫 번째 값은 [0,r][0, r], 두 번째 값은 [0,c][0, c] 범위입니다.

출력

각 데이터 집합마다 정확히 한 줄을 출력합니다.

  • AA에서 BB에 도달할 수 있으면 B can be reached from A after k move(s).를 출력하되, k는 점이 처음으로 BB에 닿기까지 이동한 칸 수입니다.
  • 도달할 수 없으면 B cannot be reached from A.를 출력합니다.

예제3

  1. 예제 1

    입력
    2
    3 4
    0 0
    0 4
    NE
    4 2
    3 1
    3 2
    NW
    
    예상 출력
    B can be reached from A after 12 move(s).
    B cannot be reached from A.
    
  2. 예제 2

    입력
    1
    1 1
    0 0
    1 1
    NE
    
    예상 출력
    B can be reached from A after 1 move(s).
    
  3. 예제 3

    입력
    1
    5 6
    2 6
    5 3
    NW
    
    예상 출력
    B can be reached from A after 3 move(s).