다단 리스트
시간 제한2초메모리 제한512 MB
입력 텍스트를 정해진 줄 수의 열과 쪽으로 배치하고, 긴 줄은 접어서 모든 칸을 점으로 채운다.
문제
Ikra 씨가 사무실의 주임 관리자가 된 뒤로, 그가 가장 좋아하는 프로그래밍과 디버깅에 쓸 시간이 거의 없어졌다. 그래서 그는 출퇴근 열차 안에서 프로그램 리스트로 프로그램을 확인하려 한다. 각 단이 그의 정장 조끼 주머니에 딱 들어가도록 소스 프로그램을 다단 리스트로 인쇄하는 도구를 그는 계속 바라 왔다.
이 문제에서는 주어진 입력 텍스트를 다단 형식으로 인쇄하는 프로그램을 만들어 그를 돕는다. 그의 정장은 주머니 크기가 다양하므로, 프로그램은 다음 네 가지 매개변수를 받을 만큼 유연해야 한다. (1) 한 단의 줄 수, (2) 한 페이지의 단 수, (3) 각 단의 너비, (4) 단 사이 간격의 너비. 인쇄에는 고정폭 글꼴을 쓴다고 가정하므로 단 너비는 한 줄에 들어가는 최대 문자 수로 주어진다. 단 사이 간격도 그 간격을 채우는 문자 수로 지정된다.
입력
한 파일에 아래 형식의 데이터 세트들이 저장되어 있다.
plen1
cnum1
width1
cspace1
line11
line12
....
line1i
....
?
plen2
cnum2
width2
cspace2
text2
line21
line22
....
line2i
....
?
0
각 데이터 세트의 처음 네 줄은 출력 형식을 지정하는 양의 정수다. Plen (1 <= plen <= 100)은 한 단의 줄 수다. Cnum은 한 페이지의 단 수다. Width는 단 너비, 즉 한 단에 들어가는 문자 수다. Cspace는 이웃한 두 단 사이의 간격 문자 수다. 1 <= (cnum * width + cspace * (cnum-1)) <= 50이라고 가정해도 된다.
그 뒤에 '?'만으로 이루어진 줄이 나올 때까지 이어지는 줄들이 입력 텍스트다. 입력 텍스트의 어떤 줄에도 영숫자 '0'-'9', 'A'-'Z', 'a'-'z' 외의 문자는 들어 있지 않다. 입력 줄 중에는 빈 줄도 있을 수 있다. 입력 줄의 길이는 1,000자를 넘지 않는다.
출력
입력 데이터 세트의 순서대로 형식에 맞춰 인쇄한다. 빈 곳은 '.' 문자로 채운다. 출력 줄이 width보다 짧으면 뒤쪽 빈칸도 '.' 문자로 채운다. 빈 입력 줄은 출력 단에서 한 줄을 차지한다. 이 빈 출력 줄은 당연히 '.' 문자로 채워진다. 그러나 입력 텍스트가 비어 있으면 어떤 페이지도 차지하지 않는다. width보다 긴 줄은 줄바꿈되어 여러 줄에 걸쳐 인쇄된다. 각 페이지의 끝에는 '#'만으로 이루어진 줄을 인쇄한다. 각 데이터 세트의 끝에는 '?'만으로 이루어진 줄을 인쇄한다.