표 그리기
면접 대비시간 제한2초메모리 제한1024 MB
행마다 셀 너비가 주어질 때, 세로 막대 위아래 위치에만 '+'가 오도록 표의 구조를 ASCII 문자로 그린다.
문제
웹 페이지를 표시하는 프로그램을 개발할 때 가장 어려운 작업 중 하나는 표를 올바르게 그리는 것이다. 여러분이 다니는 회사 <<Kozilla>>는 터미널 모드에서 동작하는 새 브라우저 <<Waterrat>>를 개발하려고 하며, 표의 구조를 만드는 부분을 담당할 웹 페이지 렌더링 코어의 일부를 작성해 달라고 요청했다.
여러분이 작성할 부분은 표의 행 수와 각 행의 셀에 대한 정보를 입력으로 받고, 표의 구조를 생성해 표를 화면에 그리는 모듈에 넘겨야 한다.
표는 행으로 이루어지고, 각 행은 하나 이상의 셀로 이루어진다. 번째 행의 번째 셀의 너비는 이다.
주어진 표의 매개변수로 그 구조를 기호로 나타낸 그림을 만들어라.
입력
입력 파일의 첫째 줄에는 표의 행 수 이 주어진다(). 다음 개 줄에는 표의 각 행에 대한 설명이 주어진다.
각 행의 설명에는 그 행의 셀 수 와 개의 정수 (그 행에서 각 셀의 너비)가 주어진다(, ).
출력
표 구조를 기호로 나타낸 그림을 출력 파일에 출력하라.
표의 번째 행의 그림은 <<+>>(더하기)와 <<->>(빼기) 문자로 이루어진 가로선 그림으로 시작해야 한다. 그다음에는 공백과 <<|>>(세로줄) 문자를 포함하는 줄이 와야 한다. 줄의 첫 문자는 세로줄이고, 그다음에 개의 공백, 그다음에 세로줄, 그다음에 개의 공백이 오는 식으로 공백 블록이 모두 개 있다. 마지막 블록 뒤에는 세로줄이 와야 한다. 표의 마지막 행 뒤에도 가로선 그림이 와야 한다.
가로선 그림에서는 그 위치의 위나 아래에 세로줄이 있으면 <<+>> 문자를 쓰고, 그렇지 않으면 <<->>를 쓴다. 가로선은 다음 줄의 모든 세로줄 문자 위와 이전 줄의 모든 세로줄 문자 아래에 <<+>> 문자가 오도록 가능한 한 짧아야 한다.