갱단

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

요약
1번가 1번 애비뉴에서 출발해 동쪽과 남쪽으로만 이동하며 그린 라인에 처음 닿는 지점을 기준으로 재귀적으로 정의된 OG 순서로 모든 경로를 정렬하고, M번째 경로를 출력하거나 경로가 부족하면 ERROR를 출력한다.
난이도

어려움10점 중 8점

유형
조합론, 동적 계획법, 재귀, 수학
정답자
아직 제출이 없습니다

문제

도심은 격자 모양이다. 거리(street)는 남북 방향으로 뻗어 있으며 서쪽의 1번 거리부터 동쪽의 20번 거리까지 번호가 매겨져 있고, 가로(avenue)는 동서 방향으로 뻗어 있으며 북쪽의 1번 가로부터 남쪽의 20번 가로까지 번호가 매겨져 있다. 도시는 두 갱단 Blip과 Crud로 나뉘어 있으며, 그 경계는 1번 거리와 1번 가로가 만나는 지점에서 20번 거리와 20번 가로가 만나는 지점까지 대각선으로 이어지는 그린 라인이다. 그린 라인의 남서쪽은 Blip이, 북동쪽은 Crud가 지배한다.

Blip은 자신을 증명하기 위해 Crud의 영역을 가로지르는 질주(run)를 한다. 질주는 1번 거리와 1번 가로의 교차점에서 시작하여 그린 라인 위의 어떤 지점에서 끝난다. 질주는 도중에 그린 라인에 닿을 수는 있지만 결코 그것을 넘어가지 않는다. 이동은 가로를 따라 동쪽으로만, 거리를 따라 남쪽으로만 하므로, 질주는 E(동쪽)와 S(남쪽)로 이루어진 문자열이다. 길이가 2N−22N-2인 질주는 NN번 거리와 NN번 가로의 교차점에서 끝난다.

어느 날 밤의 모든 질주는 길이가 같으며, Blip은 그것들이 얼마나 OG한지에 따라 순위를 매긴다. 질주 R1R_1이 질주 R2R_2보다 더 OG하다는 것은 다음 중 하나가 성립함을 뜻한다.

  • R2R_2가 R1R_1보다 엄밀히 더 이른 지점에서 그린 라인으로 처음 돌아온다. 또는
  • R1R_1과 R2R_2가 같은 지점에서 그린 라인으로 처음 돌아오지만, 그 지점까지의 R1R_1 부분에서 맨 앞의 E와 맨 뒤의 S를 제거한 것이 R2R_2의 같은 부분보다 더 OG하다. 또는
  • R1R_1과 R2R_2가 같은 지점에서 그린 라인으로 처음 돌아오고 그 지점까지 서로 같지만, R1R_1의 나머지 부분이 R2R_2의 나머지 부분보다 더 OG하다.

예를 들어:

  • EESS는 ESES보다 더 OG하다.
  • EEESSS는 EESESS보다 더 OG하다.
  • EESSEESS는 EESSESES보다 더 OG하다.

같은 길이의 모든 질주를 가장 OG한 것부터 가장 덜 OG한 것 순서로 나열한다. 질주의 순위(rank)는 이 목록에서 1부터 시작하는 위치이다. 길이가 4일 때 EESS의 순위는 1이고 ESES의 순위는 2이다.

입력

입력은 여러 개의 인스턴스로 이루어지며, 0 0만 있는 줄로 끝난다.

각 인스턴스는 두 양의 정수 NN과 MM이 한 줄에 주어진다. NN은 그날 밤 질주들이 끝나는 지점(NN번 거리와 NN번 가로)이고, MM은 원하는 순위이다. 1≤N≤201 \le N \le 20이라고 가정해도 된다.

출력

각 인스턴스에 대해, 길이가 2N−22N-2이고 순위가 MM인 질주를 출력한다. 길이가 2N−22N-2인 질주가 MM개보다 적으면 ERROR를 출력한다.

예제3

  1. 예제 1

    입력
    3 1
    3 2
    3 3
    0 0
    
    예상 출력
    EESS
    ESES
    ERROR
    
  2. 예제 2

    입력
    4 1
    4 2
    4 3
    4 4
    4 5
    4 6
    0 0
    
    예상 출력
    EEESSS
    EESESS
    EESSES
    ESEESS
    ESESES
    ERROR
    
  3. 예제 3

    입력
    5 8
    5 9
    5 14
    5 15
    0 0
    
    예상 출력
    EESSEESS
    EESSESES
    ESESESES
    ERROR