만드는 중입니다

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

중앙값 역전 문자열

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

요약
길이 n인 A, B 문자열 중 역전쌍이 정확히 k개인 것을 사전순으로 나열했을 때 가운데에 놓이는 문자열을 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 조합론, 그리디
정답자
아직 제출이 없습니다

문제

이 문제에서는 중앙값과 역전이라는 두 가지 개념을 사용한다.

중앙값: 정렬된 원소 리스트 e1,e2,e3,…e_1, e_2, e_3, \ldots가 있다고 하자. 중앙값은 리스트의 가운데, 즉 정확히 절반이 되는 위치에 있는 원소이다. 원소 개수가 홀수이면 중앙값은 하나이다. 예를 들어 원소가 13개이면 e7e_7이 중앙값이다. e7e_7 앞의 원소 수와 뒤의 원소 수가 같기 때문이다. 원소 개수가 짝수이면 중앙값은 두 개이다. 예를 들어 원소가 14개이면 e7e_7과 e8e_8이 중앙값이다. e7e_7 앞의 원소 수와 e8e_8 뒤의 원소 수가 같다.

역전: 'A'와 'B'로만 이루어진 문자열이 있다고 하자. 예를 들어 AAABABAA이다. 역전은 한 쌍의 문자 중 하나는 B, 다른 하나는 A이고, B가 A보다 문자열에서 앞에 있는 경우를 말한다. 예시 문자열에서 4번째 위치의 B와 5번째 위치의 A가 역전을 이룬다. 4번째 위치의 B와 7번째 위치의 A도 역전을 이룬다. 이 예시 문자열의 역전은 모두 5개이다.

친구 미치오는 'A'와 'B'로만 이루어진 문자열 목록을 가지고 있다. 각 문자열의 길이는 n이다. 목록의 각 문자열에는 역전이 정확히 k개 있다.

미치오는 목록에 역전이 정확히 k개인 문자열이 전부 들어 있다고 주장한다. 당신은 이 주장을 검증하려고 한다. 미치오는 문자열을 사전순으로 정렬했고, 당신은 중앙값 문자열을 제시해 그의 목록이 맞는지 확인한다.

각 문자열의 길이 n과 역전 개수 k가 주어지면, 길이가 n인 문자열 목록에서 중앙값 문자열을 출력하라.

입력

입력은 한 줄이며, 정수 두 개로 이루어진다. 첫 번째는 n (1≤n≤601 \le n \le 60)으로, 미치오 목록에 있는 각 문자열의 길이이다. 두 번째는 k로, 각 문자열의 역전 개수이다. 길이가 n이고 역전이 정확히 k개인 'A'와 'B' 문자열이 적어도 하나 존재하도록 k가 주어진다고 보장된다. (k의 범위는 다른 제약에서 정해지므로 따로 주어지지 않는다.)

출력

길이가 n이고 역전이 k개인 'A'와 'B' 문자열의 개수가 홀수이면, 중앙값 문자열을 한 줄로 출력한다. 개수가 짝수이면, 중앙값 문자열 두 개를 각각 한 줄씩 두 줄로 출력한다. 두 문자열은 사전순으로 출력한다.

예제2

  1. 예제 1

    입력
    10 3
    
    예상 출력
    AAABABABBB
    
  2. 예제 2

    입력
    3 0
    
    예상 출력
    AAB
    ABB