题目描述
给定一个 n 行 m 列的网格,第 i 行第 j 列的格子记作 (i,j),其包含的花粉量为 fi,j。
网格中共有 k 只蜜蜂,第 i 只蜜蜂的初始位置为 (xi,yi)。所有的蜜蜂都具有相同的体力值 p(p 为非负整数)。
每只蜜蜂可以自由从以下两种方案中选择一种进行花粉采集:
- 横向采集:蜜蜂在同一行进行采集,最多采集到 (xi,yi−p)∼(xi,yi+p) 范围内的花粉。
- 纵向采集:蜜蜂在同一列进行采集,最多采集到 (xi−p,yi)∼(xi+p,yi) 范围内的花粉。
超出网格边界的位置忽略不计。每个格子上的花粉最多只能被采集一次(即使它在多只蜜蜂的采集范围内,也只能计算一次)。
请问,想要让所有蜜蜂在合理的方案下,共同采集到的花粉总量至少达到 w,蜜蜂的体力值 p 至少为多少?
输入格式
第一行包含四个正整数 n,m,k,w —— 依次表示网格的行数、列数、蜜蜂的数量以及目标花粉量。
接下来 n 行,每行包含 m 个正整数,其中第 i 行的第 j 个整数表示 fi,j。
接下来 k 行,每行包含两个正整数 xi,yi,描述第 i 只蜜蜂的初始位置。
输出格式
输出一行,一个整数,表示体力值 p 的最小值。
如果 p 取任何值都不能满足目标花粉量要求,请输出 Impossible。
样例输入 1
3 4 2 20
1 2 3 4
5 6 7 8
9 10 11 12
2 2
3 4
样例输出 1
1
样例输入 2
2 3 1 100
1 2 3
4 5 6
1 1
样例输出 2
Impossible
说明
样例解释
在样例 1 中:
- 第 1 只蜜蜂初始在 (2,2)。
- 第 2 只蜜蜂初始在 (3,4)。
- 若 p=0,它们只能采集自己所在格子的花粉,总采集量为 f2,2+f3,4=6+12=18<20。
- 若 p=1:
- 第 1 只蜜蜂选择横向采集,可采集 (2,1),(2,2),(2,3),花粉量为 5+6+7=18。
- 第 2 只蜜蜂选择纵向采集,可采集 (2,4),(3,4)(超出边界的忽略),花粉量为 8+12=20。
两只蜜蜂采集的格子没有重叠,总花粉量为 18+20=38≥20。满足条件,因此 p 的最小值为 1。
数据范围
对于全部测试点,保证:
- 1≤n,m≤1000
- 1≤k≤6
- 1≤fi,j,w≤109
- 1≤xi≤n,1≤yi≤m
- 保证所有的输入数值均为整数。
各测试点的附加限制如下表所示:
| 测试点占比 |
n,m≤ |
k≤ |
特殊性质 |
| 10% |
10 |
1 |
无 |
| 20 |
3 |
| 20% |
200 |
| 6 |
| 15% |
1000 |
所有的 fi,j=1 |
| 25% |
无 |