시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
웹사이트에서는 데이터를 표 형태로 보여 주는 일이 많다. 사용자는 같은 표라도 서로 다른 기준으로 행을 정렬해 보고 싶어 할 수 있다.
예를 들어 호텔 목록을 보여 주는 사이트라면 호텔 이름, 위치, 등급, 객실 요금 같은 열을 기준으로 정렬할 수 있다. 이 문제에서는 이런 기능을 지원하는 프로그램을 작성한다.
입력은 여러 개의 데이터 세트로 이루어진다.
각 데이터 세트는 제목 줄, 표 부분, 정렬 지정 부분으로 구성된다. 제목 줄에는 데이터 세트의 제목이 들어 있다. 제목 줄이 # 하나이면 입력이 끝난다.
표 부분은 1줄 이상 20줄 이하이며, # 하나로 이루어진 줄에서 끝난다. 각 줄에는 쉼표로 구분된 1개 이상 10개 이하의 필드가 들어 있다. 모든 줄의 필드 수는 같고 빈 필드는 없다. 각 필드는 길이가 최대 20인 문자열이다.
정렬 지정 부분은 여러 개의 정렬 줄로 이루어진다. 각 정렬 줄에는 쉼표로 구분된 하나 이상의 필드 정렬자가 들어 있다. 필드 정렬자는 필드 번호와 방향으로 이루어진다. 필드 번호는 1부터 필드 수까지의 서로 다른 정수이고, 방향은 오름차순을 뜻하는 A 또는 내림차순을 뜻하는 D이다.
정렬 지정 부분은 0# 하나로 이루어진 줄에서 끝난다.
각 데이터 세트마다 먼저 제목을 출력한다. 그 뒤 각 정렬 줄에 대응하는 정렬 결과를 한 그룹씩 출력한다.
각 그룹은 정렬된 표의 행들로 이루어지며, 모든 행 앞에는 공백 두 칸을 붙인다. 같은 데이터 세트 안의 그룹 사이에는 빈 줄 하나를 둔다. 서로 다른 데이터 세트의 출력 사이에도 빈 줄 하나를 둔다.
정렬은 첫 번째 필드 정렬자를 가장 우선으로 적용한다. 앞선 필드 정렬자들에서 값이 같은 행에 대해서만 두 번째 이후의 필드 정렬자를 차례로 사용한다. 모든 지정 필드의 값이 같으면 그 행들은 원래 표에 나타난 순서를 유지해야 한다.
제목은 25글자 이하이며 알파벳과 공백으로만 이루어진다.
각 필드의 문자열은 알파벳, 숫자, _, *로만 이루어진다.