子矩阵的和
前缀和是一维上的 此题是二维的
//前缀和矩阵s[i][j]中存放a[0][0]到a[i][j]这个子矩阵所有元素的和
//1. 如何计算前缀和矩阵?
//使用容斥原理
//s[x][y] = s[x-1][y] + s[x][y-1] - s[x-1][y-1] + a[x][y]
//2. 如何利用前缀和矩阵 计算某一个子矩阵的和
//s[x1][y1] = s[x2][y2] - s[x2][y1-1] - s[x1-1][y2] + a[x1-1][y1-1]
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int n,m,q;
int a[N][N],s[N][N];
int main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
scanf("%d", &a[i][j]);
s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a[i][j];
}
while(q--)
{
int x1,y1,x2,y2;
scanf("%d%d%d%d", &x1,&y1,&x2,&y2);
printf("%d\n",s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1]);
}
return 0;
}