P16118 [USTCPC 2026] Filling with Z-shape

题目描述

有一个 $m \times n$ 的方格表,坐标下标从 $0$ 开始。初始时,每个小方格中都填有 $-1$。 一次操作可以选定一个"Z字形"区域(见图片,可旋转和翻转),将其中所填的数都变号。 输入 $m,n$,请问是否存在一系列的操作,将方格表中的所有数都变为 $1$。 如果不存在这样的操作序列,则输出 `Impossible!`。 ![](https://cdn.luogu.com.cn/upload/image_hosting/b4opta6n.png)

输入格式

输入包含两个整数 $m,n$ ($2\leq m,n\leq 2\times 10^5, 4\leq mn \le 2\times 10^5$),表示方格表的行数和列数。

输出格式

如果存在解决方案,输出操作序列:第一行输出操作数量 $r(0\leq r\leq 10^6)$,然后输出 $r$ 行,每行 $8$ 个整数,分别表示"Z字形"的四个格子的坐标(顺序为 $x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4$,其中四个点的顺序任意);如果不存在,输出 `Impossible!`。如果有多组解决方案,输出任意一组即可。 可以证明,如果存在合法的解决方案,一定存在一种合法的解决方案使得 $0\leq r \leq 10^6$。