XJOI 1 级 21 段 3317 c++ 子矩阵求和

子矩阵求和

题目描述:

读入一个n*m的矩阵,q次询问,每次询问一个子矩阵内数字权值和。

输入格式:

第一行三个整数n,m,q

之后n行每行m个0到100的整数

之后q行,每行四个整数x1,y1,x2,y2,表示要询问的子矩阵。

输出格式:

q行表示答案。

约定:

1<=n,m<=500, q<=1000000

img

#include <iostream>
using namespace std;

int main()
{
    int n, m, q;
    cin >> n >> m >> q;
    int a[n][m];
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            cin >> a[i][j];
    for (int i = 0; i < q; i++)
    {
        int x1,y1,x2,y2;
        cin >> x1 >> y1 >> x2 >> y2;
        int sum = 0;
        for (int j = x1; j <= x2; j++)
            for (int k = y1; k <= y2; k++)
                sum += a[j][k];
        cout << sum << endl;
    }
    return 0;
}

img