CF1207B.Square Filling

普及-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given two matrices AA and BB. Each matrix contains exactly nn rows and mm columns. Each element of AA is either 00 or 11; each element of BB is initially 00.

You may perform some operations with matrix BB. During each operation, you choose any submatrix of BB having size 2×22 \times 2, and replace every element in the chosen submatrix with 11. In other words, you choose two integers xx and yy such that 1≤x<n1 \le x \lt n and 1≤y<m1 \le y \lt m, and then set Bx,yB_{x, y}, Bx,y+1B_{x, y + 1}, Bx+1,yB_{x + 1, y} and Bx+1,y+1B_{x + 1, y + 1} to 11.

Your goal is to make matrix BB equal to matrix AA. Two matrices AA and BB are equal if and only if every element of matrix AA is equal to the corresponding element of matrix BB.

Is it possible to make these matrices equal? If it is, you have to come up with a sequence of operations that makes BB equal to AA. Note that you don't have to minimize the number of operations.

给你两个矩阵 AA 和 BB。每个矩阵恰好包含 nn 行和 mm 列。矩阵 AA 的每个元素为 00 或 11;矩阵 BB 的每个元素初始均为 00。

你可以对矩阵 BB 执行若干次操作。每次操作中,你选择 BB 的任意一个大小为 2×22 \times 2 的子矩阵,并将该子矩阵中的每个元素都置为 11。换言之,你选择两个整数 xx 和 yy,满足 1≤x<n1 \le x \lt n 且 1≤y<m1 \le y \lt m,然后将 Bx,yB_{x, y}、Bx,y+1B_{x, y + 1}、Bx+1,yB_{x + 1, y} 和 Bx+1,y+1B_{x + 1, y + 1} 均设为 11。

你的目标是使矩阵 BB 等于矩阵 AA。当且仅当矩阵 AA 的每个元素均等于矩阵 BB 中对应位置的元素时,称两个矩阵 AA 和 BB 相等。

能否使这两个矩阵相等?若可以,请给出一个操作序列,使得 BB 变为 AA。注意:你无需最小化操作次数。

输入格式

The first line contains two integers nn and mm (2≤n,m≤502 \le n, m \le 50).

Then nn lines follow, each containing mm integers. The jj-th integer in the ii-th line is Ai,jA_{i, j}. Each integer is either 00 or 11.

第一行包含两个整数 nn 和 mm(2≤n,m≤502 \le n, m \le 50)。

接下来是 nn 行,每行包含 mm 个整数。第 ii 行中的第 jj 个整数为 Ai,jA_{i, j}。每个整数均为 00 或 11。

输出格式

If it is impossible to make BB equal to AA, print one integer −1-1.

Otherwise, print any sequence of operations that transforms BB into AA in the following format: the first line should contain one integer kk — the number of operations, and then kk lines should follow, each line containing two integers xx and yy for the corresponding operation (set Bx,yB_{x, y}, Bx,y+1B_{x, y + 1}, Bx+1,yB_{x + 1, y} and Bx+1,y+1B_{x + 1, y + 1} to 11). The condition 0≤k≤25000 \le k \le 2500 should hold.

如果无法使 BB 等于 AA,则输出一个整数 −1-1。

否则,请输出任意一个将 BB 变换为 AA 的操作序列,格式如下:第一行输出一个整数 kk —— 操作的次数;随后 kk 行,每行包含两个整数 xx 和 yy,表示对应的操作(即将 Bx,yB_{x, y}、Bx,y+1B_{x, y + 1}、Bx+1,yB_{x + 1, y} 和 Bx+1,y+1B_{x + 1, y + 1} 均设为 11)。需满足条件 0≤k≤25000 \le k \le 2500。

输入输出样例

  • 输入#1

    3 3
    1 1 1
    1 1 1
    0 1 1

    输出#1

    3
    1 1
    1 2
    2 2
  • 输入#2

    3 3
    1 0 1
    1 0 1
    0 0 0

    输出#2

    -1
  • 输入#3

    3 2
    0 0
    0 0
    0 0

    输出#3

    0

说明/提示

The sequence of operations in the first example:

000110111111000→110→111→111000000000011\begin{matrix} 0 & 0 & 0 & & 1 & 1 & 0 & & 1 & 1 & 1 & & 1 & 1 & 1 \\ 0 & 0 & 0 & \rightarrow & 1 & 1 & 0 & \rightarrow & 1 & 1 & 1 & \rightarrow & 1 & 1 & 1 \\ 0 & 0 & 0 & & 0 & 0 & 0 & & 0 & 0 & 0 & & 0 & 1 & 1 \end{matrix}

第一个示例中的操作序列:

000110111111000→110→111→111000000000011\begin{matrix} 0 & 0 & 0 & & 1 & 1 & 0 & & 1 & 1 & 1 & & 1 & 1 & 1 \\ 0 & 0 & 0 & \rightarrow & 1 & 1 & 0 & \rightarrow & 1 & 1 & 1 & \rightarrow & 1 & 1 & 1 \\ 0 & 0 & 0 & & 0 & 0 & 0 & & 0 & 0 & 0 & & 0 & 1 & 1 \end{matrix}

输入解题思路,AI测评打分。不知道怎么写?

首页