loj#P6858. 「ICPC World Finals 2021」马赛克搜索

「ICPC World Finals 2021」马赛克搜索

题目描述

国际瓷器保护中心(International Center for the Preservation of Ceramics, ICPC)正在寻找一些古代马赛克中的图案。根据 ICPC 的定义,马赛克是一个矩形网格,每个格子里都有一块彩色的瓷砖。图案与马赛克相似,但有些格中可以是空的。图 G.1 展示了一个图案和马赛克的例子。

一个 rq×cqr_q\times c_q 的马赛克按从上到下的顺序对行从 11rqr_q 编号,按从左到右的顺序对列从 11cqc_q 编号。

如果图案的每一块瓷砖都与子网格的相应瓷砖的颜色相匹配,那么马赛克的一个连续的矩形子网格就与该图案相匹配。形式化地,如果对于所有 1irp,1jcp1\le i\le r_p,1\le j\le c_p,瓷砖 (r+i1,c+j1)(r+i-1,c+j-1) 出现在马赛克中,且图案的 (i,j)(i,j) 位置要么是空的,要么瓷砖颜色和马赛克中瓷砖 (r+i1,c+j1)(r+i-1,c+j-1) 的颜色一样,则称这个 rp×cpr_p\times c_p 的图案出现在 rq×cqr_q\times c_q 的马赛克的 (r,c)(r,c) 位置。

给定图案和马赛克的信息,找出马赛克中出现这个图案的所有位置。

G.png

图 G.1 样例 1 中的图案(左边)和马赛克(右边)

输入格式

输入第一行包含两个整数 rpr_pcp (1rp,cp1 000)c_p\ (1\le r_p,c_p\le 1\ 000),分别表示图案的行数和列数。接下来 rpr_p 行,每行 cpc_p 个在 [0,100][0,100] 区间内的整数,表示在这个位置的图案颜色。如果为 00 则表示这个位置没有瓷砖。

接下来一行包含两个整数 rqr_qcq (1rq,cq1 000)c_q\ (1\le r_q,c_q\le 1\ 000),分别表示马赛克的行数和列数。接下来 rqr_q 行,每行 cqc_q 个在 [1,100][1,100] 区间内的整数,表示在这个位置的马赛克颜色。

输出格式

第一行输出一个整数 kk,表示总共的匹配次数。接下来 kk 行,每行输出两个整数 r,cr,c,表示匹配位置。按 rr 递增顺序输出,对于 rr 相同的,按 cc 递增顺序输出。

2 2
1 0
0 1
3 4
1 2 1 2
2 1 1 1
2 2 1 3

3
1 1
1 3
2 2