AT_xmascon20_a Additive-Subtractive Stamps
题目描述
使用最多 $20,000$ 次给定的印章,创作一个符合以下区域地图要求的图像。**只要符合后述的达成条件,可以将图像制作得更加丰富多彩。**

### 输入格式
本题不需要输入。
### 输出格式
第一行输出一个整数 $ p $,表示印章操作的次数,满足 $ 0 \le p \le 20,000 $。
接下来的 $ p $ 行,每行包含 $ 4 $ 个用空格分隔的整数 $ k_i,\ x_i,\ y_i,\ t_i $,代表第 $ i $ 次印章操作的信息:在位置 $ (x_i,\ y_i) $ 使用 ID 为 $ k_i $ 的印章。$ t_i = 1 $ 表示盖章操作,$ t_i = -1 $ 表示撤销操作。
印章必须在至少能覆盖一个像素的有效位置使用,即对于印章 $ k_i $,其大小为 $ s $,要求 $ -s < x_i < 800 $ 且 $ -s < y_i < 400 $。
### 数据范围与提示
#### 画布和印章
制作图像的画布宽 $800$ 像素,高 $400$ 像素。像素位置由整数对 $ (x, y) $ 表示,满足 $ 0 \le x < 800 $,$ 0 \le y < 400 $。**注意,$ x $ 坐标从左到右递增,$ y $ 坐标从上到下递增。**每个像素拥有 $ R, G, B $ 三个颜色值,初始时全为 $ 0 $。
印章用大小 $ s $ 和颜色信息 $ (r, g, b) $ 表示。一次印章操作可以在画布的指定位置盖上或移除印章。
具体来说,如果印章 $ (s, r, g, b) $ 被盖在或移除自位置 $ (x_i, y_i) $,那么满足 $ x_i \le x < x_i + s $ 且 $ y_i \le y < y_i + s $ 的所有像素 $ (x, y) $ 的 $ R, G, B $ 值分别增加或减少 $ r, g, b $。如果某像素的值超过 $ 255 $,则变为 $ 255 $;若低于 $ 0 $,则变为 $ 0 $。
#### 达成条件
在区域地图中,由相同颜色的四方向连通的像素组成的部分称作“区域”。图像要被视为“符合区域地图”,必须满足以下条件:
- **区域内条件**:每个区域内,所有像素的 $ R $ 值方差不大于 $ 700 $,$ G $ 和 $ B $ 同样如此。
- **相邻区域条件**:将某一区域的“平均色”定义为该区域内所有像素的 $ R, G, B $ 的平均值。对于相邻的两个区域,若它们的平均色分别为 $ (R_1, G_1, B_1) $ 和 $ (R_2, G_2, B_2) $,则需满足 $ (R_1 - R_2)^2 + (G_1 - G_2)^2 + (B_1 - B_2)^2 \ge 80^2 $。
#### 数据
**解题所需的数据已打包成 zip 文件,可以从[这里](https://img.atcoder.jp/xmascon20/04fbe0718c44e1333ca058e2a8309f0f.zip)下载。**zip 包含以下文件:
- `stamps/map.png`:表示区域地图的图像文件,尺寸为宽 $800$ 像素,高 $400$ 像素。
- `stamps/map.txt`:与区域地图对应的文本文件,给每个像素分配了区域 ID。
- 包括 $400$ 行,每行有 $800$ 个整数。
- `stamps/stampset.txt`:可用印章列表的文本文件。
- 第一行为印章种类数 $ K $。
- 接下来的 $ K $ 行是印章的信息,每行由五个整数 $ k, s, r, g, b $ 组成,表示 ID 为 $ k $ 的印章特征为 $ (s, r, g, b) $。印章按 ID 升序排列。
- `stamps/play.html`:**可视化工具和手动操作工具**,可以用于操作可视化和达成条件检测,提交前建议使用。
- 下方有“加载印章操作”功能,会读取所有合法的印章操作行(因此,符合输出格式的输入时,第一行会被忽略)。
- `stamps/play.js`:可视化工具的源代码。
#### 限制条件
上述数据文件中,包括以下重要信息:
- 图像尺寸是宽 $800$ 像素和高 $400$ 像素。
- 区域个数为 $30$,区域 ID 为 $0$ 至 $29$。
- 相同区域 ID 的像素设置是四方向连通的。
- 印章种类数为 $18$,印章 ID 为 $0$ 至 $17$。
- 每个印章的参数满足以下条件:
- $7 \le s \le 50$。
- $0 \le r \le 40$。
- $0 \le g \le 40$。
- $0 \le b \le 40$。
此示例为符合上述格式要求的输出示例(但此输出不满足达成条件,会得到 `WA`)。
**本翻译由 AI 自动生成**
输入格式
この問題では入力は与えられない.
输出格式
> $ p $ $ k_1 $ $ x_1 $ $ y_1 $ $ t_1 $ $ \vdots $ $ k_p $ $ x_p $ $ y_p $ $ t_p $
$ 1 $ 行目に,スタンプ操作の回数を表す整数 $ p $ ($ 0\ \le\ p\ \le\ 20\,000 $) を出力せよ.
続く $ p $ 行のうち $ i $ ($ 1\ \le\ i\ \le\ p $) 行目には,$ i $ 回目のスタンプ操作を表す $ 4 $ つの整数 $ k_i,\ x_i,\ y_i,\ t_i $ を空白区切りで出力せよ.これは,$ i $ 回目の操作では位置 $ (x_i,\ y_i) $ に ID $ k_i $ のスタンプを使うことを表す.$ t_i\ =\ 1 $ の場合はスタンプを押す操作,$ t_i\ =\ -1 $ の場合はスタンプを引く操作を表す.
スタンプは少なくとも $ 1 $ 個の画素を覆う位置で使わなければならない.すなわち,ID $ k_i $ のスタンプの大きさが $ s $ のとき,$ -s\
说明/提示
### キャンバスとスタンプ
画像を作るためのキャンバスは横 $ 800 $ px,縦 $ 400 $ px であり,画素の位置は整数の組 $ (x,\ y) $ ($ 0\ \le\ x\