변덕스러운 정렬
면접 대비시간 제한10초메모리 제한1024 MB
블록 크기가 주어질 때, A로 시작하고 홀수 블록에서는 문자가 증가, 짝수 블록에서는 감소하는 사전순으로 가장 앞선 문자열을 만든다.
문제
영어 대문자로 이루어진 문자열을 정렬된 순서로 만들려고 한다. 다만 순서가 어떤 때는 엄격히 증가하고 어떤 때는 엄격히 감소하기를 원한다.
문자열의 첫 글자는 A여야 한다. 그 뒤로 문자열은 하나 이상의 블록으로 이루어진다. 번째 블록은 정확히 개의 글자를 포함해야 한다. 가 홀수이면 번째 블록의 각 글자는 문자열에서 바로 앞 글자보다 알파벳에서 뒤에 있어야 하고, 가 짝수이면 바로 앞 글자보다 앞에 있어야 한다. 블록의 첫 글자에도 바로 앞 글자가 존재한다는 점에 주의하라. 그 글자는 블록에 속하지 않을 뿐이다. 이 규칙을 모두 따르는 문자열을 올바른 문자열이라고 한다. 올바른 문자열은 여러 개일 수 있으며, 그중 사전 순으로 가장 앞서는 것을 찾으려고 한다.
예를 들어 블록이 개이고 크기가 , 이라면 문자열은 정확히 개의 글자를 가져야 한다. 여기서 은 맨 앞의 A를 뜻한다. 문자열 XYZYBA, AZYCBA, AYZYBB는 이 경우에 올바르지 않은데, 각각 시작 글자 조건, 첫 번째 블록의 순서 조건, 두 번째 블록의 순서 조건을 위반하기 때문이다. 문자열 AYZYBA는 올바르다. 문자열 ABDCBA도 올바르며, 게다가 사전 순으로 가장 앞서는 올바른 문자열이다.
블록의 크기가 주어질 때, 모든 올바른 문자열 가운데 사전 순으로 가장 앞서는 올바른 문자열을 출력하라. 주어진 제한 안의 모든 입력에 대해 올바른 문자열이 적어도 하나 존재함을 보일 수 있다.
입력
입력의 첫 줄에는 테스트 케이스의 수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다. 테스트 케이스의 첫 줄에는 블록의 수 이 주어진다. 둘째 줄에는 각 블록이 가져야 하는 글자 수 이 순서대로 주어진다.
출력
각 테스트 케이스마다 Case #x: y 형태의 한 줄을 출력한다. 는 테스트 케이스 번호(1부터 시작)이고 는 사전 순으로 가장 앞서는 올바른 문자열이다. 올바른 문자열이 적어도 하나 존재함이 보장된다.
제한
- .
- 모든 에 대해 .