시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
버스 시간표는 보통 왼쪽에 정류장 번호가 세로로 있고, 오른쪽에는 각 운행편을 나타내는 열들이 있다. 각 운행편 열의 머리글에는 그 운행편의 노선 번호가 적힌다. 정류장과 운행편이 만나는 칸은 비어 있거나, 그 운행편이 그 정류장을 떠나는 시간이 들어간다.
여러 시나리오의 노선과 운행 정보가 주어질 때, 각 시나리오에 맞는 버스 시간표를 출력하는 프로그램을 작성하라.
입력은 여러 시나리오로 이루어진다. 각 시나리오는 제목 한 줄로 시작하고, 이어서 그 시나리오에 포함된 각 노선의 정보가 한 줄씩 주어진다. 전체 입력은 # 한 줄로 끝난다.
노선 정보 한 줄은 첫 운행편이 차고지를 떠나는 시각의 시와 분, 그리고 운행 간격(분)으로 시작한다. 그 뒤에는 이동 시간과 도착 정류장 번호를 나타내는 정수 쌍들이 이어진다. 한 시나리오의 노선 목록은 0 0 한 줄로 끝난다.
노선은 입력된 순서대로 1번부터 번호가 매겨지고, 정류장도 1번부터 번호가 매겨진다. 버스는 되돌아오는 차고지를 제외하면 정류장을 항상 번호가 증가하는 순서로 방문한다. 차고지는 정류장 0으로 취급되므로 각 노선 정보의 마지막 정류장 번호는 항상 0이다. 한 시나리오에는 노선이 10개를 넘지 않고, 정류장은 99개를 넘지 않는다. 어떤 버스도 6:00 전에 출발하지 않으며, 생성되는 모든 운행편은 자정까지 차고지로 돌아와야 한다. 이 조건을 어기는 운행편은 출력하지 않는다.
각 시나리오마다 시간표 하나를 출력한다. 시간표의 첫 줄에는 시나리오 제목을 그대로 출력한다. 다음 줄은 운행편 머리글이며, 차고지 출발 시각이 빠른 순서대로 정렬된 각 운행편의 노선 번호를 적는다. 그 다음에는 입력에 등장한 정류장 번호마다 한 줄씩 출력한다.
각 정류장 줄은 두 칸 너비의 정류장 번호로 시작한다. 각 운행편 칸은 여섯 칸 너비이며, 첫 문자는 |이다. 해당 운행편이 그 정류장에 서지 않으면 뒤의 다섯 칸은 공백이다. 서는 경우에는 뒤의 다섯 칸에 24시간제 hh:mm 형식의 출발 시각을 출력하며, 한 자리 수 시각과 분에는 앞에 0을 붙인다. 각 줄의 끝에도 |를 출력한다. 한 운행편 안에서는 아래로 내려갈수록 시간이 증가하지만, 같은 행에서 왼쪽에서 오른쪽으로는 반드시 증가하지 않을 수 있다. 시나리오 사이에는 빈 줄 하나를 둔다.