首页 > 试题广场 >

再临艾弗埃恩地

[编程题]再临艾弗埃恩地
  • 热度指数:33 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}艾弗埃恩地是一个 nm 列的矩阵,a_{i, j} 表示第 i 行第 j 列位置的高度。
\hspace{15pt}现在,笨蛋同学和天才同学走丢了。已知天才同学位于 (x, y),且笨蛋同学所在位置与天才同学的曼哈顿距离恰好为 k
\hspace{15pt}在所有满足条件的位置中,笨蛋同学位于高度最高的位置。请你计算笨蛋同学所在位置的高度。如果不存满足条件的位置,输出 -1
\hspace{15pt}对于两个位置 (x_1, y_1)(x_2, y_2),它们的曼哈顿距离定义为 |x_1 - x_2| + |y_1 - y_2|

输入描述:
\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 2 \times 10^5\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入三个整数 n, m, q(1 \leqq n, m \leqq 3 \times 10^5;\ 1 \leqq q \leqq 5 \times 10^5) 表示矩阵的行数、列数和询问次数。
\hspace{15pt}此后 n 行,第 i 行输入 m 个整数 a_{i, 1}, a_{i, 2}, \dots, a_{i, m}\left(-10^9 \leqq a_{i, j} \leqq 10^9 \right) 表示矩阵第 i 行的高度。
\hspace{15pt}此后 q 行,每行输入三个整数 x, y, k \left(1 \leqq x \leqq n;\ 1 \leqq y \leqq m;\ 1 \leqq k \leqq 2 \times 10^9\right) 表示天才同学的位置 (x, y) 和曼哈顿距离 k
\hspace{15pt}除此之外,保证单个测试文件的 n \times m 之和不超过 6 \times 10^5q 之和不超过 5 \times 10^5


输出描述:
\hspace{15pt}对于每组测试数据的每个询问,输出一行一个整数,表示在与 (x,y) 的曼哈顿距离恰好为 k 的所有位置中,最大高度的值;若不存在满足条件的位置,输出-1
示例1

输入

2
3 3 2
1 2 3
4 5 6
7 8 9
2 2 1
2 2 10
4 4 2
1 1 1 1
1 10 10 1
1 10 10 1
1 1 1 1
2 2 1
2 2 2

输出

8
-1
10
10

这道题你会答吗?花几分钟告诉大家答案吧!