#L4915. 「POI2018 R1」洪水 Flood

「POI2018 R1」洪水 Flood

题目描述

题目译自 XXV Olimpiada Informatyczna — I etap Powódź

字节城常被暴雨侵袭,这让当地农民头疼不已。他们的方形田地整齐排列成 m×nm \times n 的矩形网格(mm 行,每行 nn 块,总共 mnm n 块田)。最让他们苦恼的是,邻田的雨水会溢到自家田里。于是,他们在田间边界建起了各种防洪堤,得意地称之为水坝。每对相邻田地之间有一座高度为 11HH 毫米的水坝。网格外边界全被高度为 HH 毫米的水坝围住。

你想知道一场大暴雨后,田里的水位会是什么样。为简单起见,只考虑每块田的水位(单位毫米)是 00HH 之间的整数。注意,对于每对相邻田地,若它们之间的水坝高度为 hh 毫米,两田水位要么相等,要么都不超过 hh 毫米。否则,水会从较高的一侧(超过 hh 毫米)漫过水坝流到另一侧。

请你写一个程序,计算可能的洪水场景有多少种。两个场景若至少有一块田的水位不同,就视为不同。由于结果可能很大,输出对 10000000071000000007 取模的值。

输入格式

输入的第一行包含三个整数 mm, nn, HH (m,n,H1m, n, H \geq 1),分别表示矩形网格的行数、列数和最大水位(毫米)。

n>1n > 1,接下来 mm 行,每行 n1n-1 个整数,表示第 jj 行中第 ii 块田与第 i+1i+1 块田间水坝的高度。

m>1m > 1,再接下来 m1m-1 行,每行 nn 个整数,表示第 ii 列中第 jj 块田与第 j+1j+1 块田间水坝的高度。

输出格式

输出一个整数,表示可能洪水场景的数量,对 10000000071000000007 取模。

样例

输入

3 2 2
1
1
1
1 2
1 1

输出

65

所有田的水位可以全为 2211 种可能),或者每块田独立地取 001126=642^{6} = 64 种可能),总共 6565 种。

附加样例

  • m=3m=3, n=3n=3, H=4H=4
  • m=1m=1, n=1000n=1000, H=1000H=1000,第 ii 个水坝高度为 ii
  • m=1000m=1000, n=500n=500, H=1H=1,所有水坝高度为 11

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
1 mn10m n \leq 10, H4H \leq 4 10
2 mn2000m n \leq 2000, H109H \leq 10^{9} 20
3 mn200000m n \leq 200000, H5H \leq 5
4 mn500000m n \leq 500000, min(m,n)=1\min(m, n) = 1, H109H \leq 10^{9}
5 mn500000m n \leq 500000, H109H \leq 10^{9} 30