画图
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个 n \times m 的画布,画布共 n 行,每行由 m 个像素点组成,初始时这些像素点均为白色。第 x 行第 y 列的像素点的坐标为 (x, y)。小S会对这个画布进行 k 次绘制操作,操作分为两种,分别为绘制线段和绘制矩形(仅边框)。操作的具体描述如下:
绘制线段的操作会给定线段的两个端点 (x_1, y_1)(x_2, y_2)(保证 (x_1, y_1) \neq (x_2, y_2))。线段可能有四种方向,分别为水平、垂直、45 度角的左斜和右斜。题目保证给出的线段一定满足这四种方向之一。您需要使用黑色填充这条线段上的所有像素点,具体来说:
  • 如果 (x_1, y_1)(x_2, y_2) 是水平线段,则 x_1 = x_2,您需要填充所有满足 \min(y_1, y_2) \leq y \leq \max(y_1, y_2) 的位置 (x_1, y)
  • 如果 (x_1, y_1)(x_2, y_2) 是垂直线段,则 y_1 = y_2,您需要填充所有满足 \min(x_1, x_2) \leq x \leq \max(x_1, x_2) 的位置 (x, y_1)
  • 如果 (x_1, y_1)(x_2, y_2)45 度角的左斜线段(从左上到右下),则 x_2 - x_1 = y_2 - y_1,您需要填充所有满足 \min(x_1, x_2) \leq x \leq \max(x_1, x_2) 的位置 (x, y),其中 y = y_1 + (x - x_1)
  • 如果 (x_1, y_1)(x_2, y_2)45 度角的右斜线段(从右上到左下),则 x_2 - x_1 = -(y_2 - y_1),您需要填充所有满足 \min(x_1, x_2) \leq x \leq \max(x_1, x_2) 的位置 (x, y),其中 y = y_1 - (x - x_1)

图1 四种线段需要填充的像素点展示
绘制矩形的操作会给定矩形的两个对角的坐标 (x_1, y_1)(x_2, y_2)(保证 x_1 \neq x_2y_1 \neq y_2)。您需要使用黑色填充矩形边界的四条边,而不需要对矩形内部做任何操作。具体来说:
  • 您需要填充所有满足 \min(y_1, y_2) \leq y \leq \max(y_1, y_2) 的位置 (x, y),其中 x \in \{x_1, x_2\}
  • 您需要填充所有满足 \min(x_1, x_2) \leq x \leq \max(x_1, x_2) 的位置 (x, y),其中 y \in \{y_1, y_2\}

图2 矩形需要填充的像素点展示
以上描述中 \min(a, b) 表示 a, b 两数中较小的那个,\max(a, b) 表示较大的那个。
您需要求出 k 次操作后画布中各个像素点的颜色。

输入描述:

第一行包含两个整数 nm1 \le n, m \le 1000),表示画布的大小。
第二行包含一个整数 k0 \le k \le 5000),表示操作的数量。
接下来 k 行,每行表示一个操作,格式如下:
  • x_1 y_1 x_2 y_2:表示绘制线段的操作。线段的两个端点分别为 (x_1, y_1) 和 (x_2, y_2)。保证 1 \le x_1, x_2 \le n1 \le y_1, y_2 \le m(x_1, y_1) \neq (x_2, y_2) 且线段为题目描述中的四种方向之一。
  • x_1 y_1 x_2 y_2:表示绘制矩形的操作。矩形的两个对角坐标分别为 (x_1, y_1) 和 (x_2, y_2)。保证 1 \le x_1, x_2 \le n1 \le y_1, y_2 \le mx_1 \neq x_2y_1 \neq y_2
请注意,对于绘制四种方向的线段的操作,(x_1, y_1) 可能表示线段的两个端点中的任意一个。例如,对于 45 度角的左斜线段,(x_1, y_1) 既可能表示线段左上角的坐标(即 x_2 > x_1),又可能表示线段右下角的坐标(即 x_2 < x_1)。对于绘制矩形的操作,(x_1, y_1) 可能表示矩形的四个角中的任意一个。

输出描述:

输出共 n 行,每行 m 个字符表示 k 次操作后画布的颜色,字符'.'表示白色,字符'x'表示黑色。
示例1

输入

复制
7 17
6
2 2 2 6 4
2 2 8 6 6
1 4 8 4 6
1 2 10 6 10
1 2 12 2 16
1 2 16 6 12

输出

复制
.................
.xxx.xxx.x.xxxxx.
.x.x.x.x.x....x..
.x.x.xxx.x...x...
.x.x.x.x.x..x....
.xxx.xxx.x.x.....
.................