아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

전자 게시판

시간 제한2초메모리 제한1024 MB

요약
작은 격자에 그려진 숫자의 선분들을 k배 확대한 뒤, 중심이 주요 칸과 맨해튼 거리 d-1 이내인 칸을 모두 칠해 그림을 출력한다.
난이도

보통10점 중 7점

유형
기하, 구현, 완전 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

아르카디 세묘노비치 타프킨의 방에는 전자시계가 있다. 이 시계의 숫자는 특별한 의사 그래픽으로 표시된다. 즉, 숫자를 나타내는 각 격자는 너비 ww칸, 높이 hh칸으로 이루어져 있으며, 격자의 칸은 정사각형이다.

그런데 최근 아르카디 세묘노비치에게 문제가 생겼다. 요즘 시력이 나빠진 것이다. 그래서 그는 이 숫자의 이미지를 확대하려고 한다. 그는 이미 오래된 19"19" 모니터를 시계에 연결해 두었고, 이제 남은 일은 디스플레이에 숫자를 그리는 프로그램을 작성하는 것뿐이다. 아르카디 세묘노비치는 이미지를 kk배로 확대하고 선의 두께를 dd로 만들고자 한다. 그를 도와주자.

<<kk배로 확대>>라는 개념을 더 형식적으로 설명하자. w×hw \times h 격자의 칸에 위에서 아래로, 왼쪽에서 오른쪽으로 번호를 매긴다. 그러면 왼쪽 위 칸은 좌표 (0,0)(0, 0), 오른쪽 아래 칸은 (w−1,h−1)(w - 1, h - 1), 오른쪽 위 칸은 (w−1,0)(w - 1, 0), 왼쪽 아래 칸은 (0,h−1)(0, h - 1)을 갖는다. 또한 원점이 왼쪽 위 칸의 중심에 있고, OxOx축은 오른쪽을, OyOy축은 아래를 향하며, 단위 길이가 칸의 한 변의 길이와 같은 데카르트 직각좌표계를 도입하자. 그러면 칸의 중심 좌표는 위에서 매긴 번호의 좌표와 일치한다.

각 십진 숫자는 그것을 구성하는 선분의 집합으로 주어진다. 편의상 각 선분은 좌표축 중 하나와 평행하거나, 좌표축과 45도 각도를 이룬다.

kk배로 확대된 숫자는 가로 (w−1)⋅(k−1)+w(w - 1) \cdot (k - 1) + w칸, 세로 (h−1)⋅(k−1)+h(h - 1) \cdot (k - 1) + h칸의 격자에 그려진다.

어떤 숫자를 kk배로 확대할 때 다음 연산을 수행한다. 숫자를 구성하는 선분의 끝점 좌표에 kk를 곱한다. 그런 다음, 이 선분이 중심을 지나는 칸을 칠한다. 이 칸을 기본 칸이라고 하자.

그런 다음 선의 두께를 dd로 만들기 위해, 중심이 기본 칸의 중심에서 거리가 (d−1)(d - 1) 이하인 칸을 추가로 칠한다. 두 점 A(x_A,y_A)A(x\_A, y\_A)와 B(x_B,y_B)B(x\_B, y\_B) 사이의 거리는 ρ(A,B)=∣x_A−x_B∣+∣y_A−y_B∣\rho(A, B) = |x\_A - x\_B| + |y\_A - y\_B|로 정의한다.

숫자의 설명과 매개변수 kk, dd가 주어졌을 때, 숫자를 kk배로 확대하고 선의 두께가 dd인 이미지를 출력하라.

입력

입력 파일의 첫째 줄에는 정수 kk와 dd가 주어진다 (1≤k≤1001 \le k \le 100, 1≤d≤5001 \le d \le 500). 둘째 줄에는 정수 ww와 hh가 주어진다 (1≤w,h≤101 \le w, h \le 10).

셋째 줄에는 숫자의 설명에 있는 선분의 수 nn이 주어진다 (1≤n≤1001 \le n \le 100). 다음 nn개의 줄에는 각각 하나의 선분이 주어진다. 선분의 설명은 네 개의 정수 x_1x\_1, y_1y\_1, x_2x\_2, y_2y\_2 (0≤x_1,x_2<w0 \le x\_1, x\_2 < w, 0≤y_1,y_2<h0 \le y\_1, y\_2 < h)로 이루어지며, 이는 선분의 끝점 좌표이다.

각 선분은 좌표축 중 하나와 평행하거나, 좌표축과 45도 각도를 이룬다. 모든 선분의 길이는 0이 아니다.

출력

출력 파일은 정확히 (h−1)⋅(k−1)+h(h - 1) \cdot (k - 1) + h개의 줄로 이루어져야 하며, 각 줄은 (w−1)⋅(k−1)+w(w - 1) \cdot (k - 1) + w개의 문자를 포함한다. ii번째 줄의 jj번째 문자는 중심이 (j,i)(j,i)인 칸이 칠해졌으면 <<*>> (별표), 그렇지 않으면 <<.>> (점)이어야 한다.

예제3

  1. 예제 1

    입력
    1 1
    4 6
    2
    0 0 3 0
    3 0 3 5
    
    예상 출력
    ****
    ...*
    ...*
    ...*
    ...*
    ...*
    
  2. 예제 2

    입력
    2 1
    4 6
    4
    0 0 3 0
    3 0 3 2
    3 2 0 5
    0 5 3 5
    
    예상 출력
    *******
    ......*
    ......*
    ......*
    ......*
    .....*.
    ....*..
    ...*...
    ..*....
    .*.....
    *******
    
  3. 예제 3

    입력
    2 2
    4 6
    4
    0 0 3 0
    3 0 3 2
    3 2 0 5
    0 5 3 5
    
    예상 출력
    *******
    *******
    .....**
    .....**
    .....**
    ....***
    ...***.
    ..***..
    .***...
    *******
    *******