hrust 1693Difficult work【前缀数组】

Difficult work
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 173(68 users) Total Accepted: 89(56 users) Rating: Special Judge: No
Description

     小D故意难为GiGi兔,给她一个很棘手的work。

先给出一个n*n的方形,每个格子内放入一个数字a(0<=a<=100)。然后算出以(x1, y1), (x2, y2)为对角线的矩形内所有数字的和。

Input

输入包含多组测试数据。

第一行包含两个正整数n和m(1=

接下来m行,每行包含四个整数x1, y1, x2, y2。(1<= x1<=x2, y1<= y2 <=n)。

Output

每行包括一个数字和。(保证在32位整数内)

Sample Input

3 3

1 2 3

4 5 6

7 8 9

1 1 2 2

1 1 3 3

2 1 3 3

Sample Output

12

45

39

#include
using namespace std;
int sum[505][505];
int main()
{
    int n, m;
    while(cin >> n >> m)
    {
        memset(sum, 0, sizeof sum);
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= n; j++)
            {
                cin >> sum[i][j];
                sum[i][j] += sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
            }
        }
        for(int k = 0; k < m; k++)
        {
            int x, y, xx, yy;
            cin >> x >> y >> xx >> yy;
            cout << sum[xx][yy] + sum[x - 1][y - 1] - sum[x - 1][yy] - sum[xx][y - 1] << endl;
        }
    }
    return 0;
}

你可能感兴趣的:(hrust 1693Difficult work【前缀数组】)