题目描述
给定一个 n 行 m 列的整数矩阵,再给定 q 次询问,每次询问给出一个子矩阵的左上角 (x1,y1) 与右下角 (x2,y2)。
请你求出:所有询问中,子矩阵元素和的最大值是多少。
输入格式
第一行包含三个整数 n,m,q。
接下来 n 行,每行 m 个整数,表示整数矩阵。
接下来 q 行,每行四个整数 x1,y1,x2,y2,表示一次询问。
输出格式
一行一个整数,表示所有询问中子矩阵和的最大值。
数据范围
1≤n,m≤1000,1≤q≤105,1≤x1≤x2≤n,1≤y1≤y2≤m,−1000≤ai,j≤1000。
样例
输入样例 1
2 3 2
1 -2 3
-4 5 -6
1 1 2 3
2 2 2 3
输出样例 1
-1
提示
样例中两次询问的答案分别是 −3 与 −1,最大值为 −1。
做法:二维前缀和 O(1) 处理一次询问,边算边取最大值,总复杂度 O(nm+q)。