#1238. 最大和矩形查询

最大和矩形查询

题目描述

给定一个 nn 行 mm 列的整数矩阵,再给定 qq 次询问,每次询问给出一个子矩阵的左上角 (x1,y1)(x_1,y_1) 与右下角 (x2,y2)(x_2,y_2)。

请你求出:所有询问中,子矩阵元素和的最大值是多少。

输入格式

第一行包含三个整数 n,m,qn, m, q。

接下来 nn 行,每行 mm 个整数,表示整数矩阵。

接下来 qq 行,每行四个整数 x1,y1,x2,y2x_1, y_1, x_2, y_2,表示一次询问。

输出格式

一行一个整数,表示所有询问中子矩阵和的最大值。

数据范围

1≤n,m≤10001 \le n, m \le 1000,1≤q≤1051 \le q \le 10^5,1≤x1≤x2≤n1 \le x_1 \le x_2 \le n,1≤y1≤y2≤m1 \le y_1 \le y_2 \le m,−1000≤ai,j≤1000-1000 \le a_{i,j} \le 1000。

样例

输入样例 1

2 3 2
1 -2 3
-4 5 -6
1 1 2 3
2 2 2 3

输出样例 1

-1

提示

样例中两次询问的答案分别是 −3-3 与 −1-1,最大值为 −1-1。

做法:二维前缀和 O(1)O(1) 处理一次询问,边算边取最大值,总复杂度 O(nm+q)O(nm+q)。