만드는 중입니다

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

Pogo (Large)

시간 제한5초메모리 제한512 MB

요약
1부터 m까지 길이가 늘어나는 점프마다 동서남북 방향을 정해 목표 좌표에 최소 횟수로 도달하는 문자열을 출력합니다.
난이도

보통10점 중 7점

유형
수학, 그리디
정답자
아직 제출이 없습니다

문제

포고 스틱을 타고 평면 위를 뛰어다닌다. 점프 거리는 계속 늘어나서 첫 번째 점프는 1만큼, 두 번째 점프는 2만큼, ii번째 점프는 정확히 ii만큼 이동한다. 방향은 북(y 증가), 남(y 감소), 동(x 증가), 서(x 감소) 네 가지 중 하나를 고른다.

무한히 넓은 평면의 (0,0)(0, 0)에서 출발해 (X,Y)(X, Y)에 정확히 서려고 한다. 점프를 건너뛰거나 거리를 바꿀 수 없으므로 mm번 점프하면 사용한 거리는 순서대로 1,2,…,m1, 2, \dots, m이다. 점프 횟수를 최소로 하여 (X,Y)(X, Y)에 도달하는 방법을 구하라.

입력

첫 줄에 테스트 케이스 수 TT가 주어진다. 이어지는 TT개의 줄에 도착 좌표 XX와 YY가 공백 하나로 구분되어 주어진다.

  • 1≤T≤1001 \le T \le 100
  • 0≤∣X∣,∣Y∣≤1060 \le |X|, |Y| \le 10^6
  • (X,Y)(X, Y)는 (0,0)(0, 0)이 아니다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 N, S, E, W로 이루어진 문자열로 ii번째 문자가 ii번째 점프의 방향이다. 예를 들어 NSEW는 북, 남, 동, 서 순서로 뛴다는 뜻이다.

문자열은 정확히 (X,Y)(X, Y)에서 끝나야 하고, 길이가 최소여야 한다.

길이가 최소인 문자열이 여럿이면 그중 하나만 정답으로 인정한다. 문자열을 뒤에서부터 읽어 가장 작은 것을 고른다. 즉 마지막 문자를 알파벳 순서 E < N < S < W로 비교하고, 같으면 뒤에서 두 번째 문자를 비교하고, 그다음에는 뒤에서 세 번째 문자를 비교하는 식이다. 이렇게 정해진 문자열 하나를 출력한다.

힌트

(3,4)(3, 4)에 도달하는 가장 짧은 문자열의 길이는 5이다.

예제2

  1. 예제 1

    입력
    2
    3 4
    -3 4
    
    예상 출력
    Case #1: WEWNE
    Case #2: WWNSN
    
  2. 예제 2

    입력
    4
    1 0
    0 1
    -1 0
    0 -1
    
    예상 출력
    Case #1: E
    Case #2: N
    Case #3: W
    Case #4: S