#include <iostream>
#include <algorithm>
#include <math.h>
#include <algorithm>
using namespace std;
 
int N, M, K;
int arr[310][310];
long long dp[310][310];
int startX, startY;
int endX, endY;
 
int main(void)
{
//    freopen("B2167_input.txt", "r", stdin);
    
    cin >> N >> M;
    
    for(int i = 1; i <= N; i++)
    {
        for(int j = 1; j <= M; j++)
        {
            cin >> arr[i][j];
        }
    }
    
    // 미리 구해놓기
    for(int i = 1; i <= N; i++)
    {
        for(int j = 1; j <= M; j++)
        {
            dp[i][j] = dp[i-1][j] + dp[i][j-1+ arr[i][j] - dp[i-1][j-1];        
        }
    } 
    
    cin >> K;
    
    for(int i = 1; i <= K; i++)
    {
        cin >> startX >> startY >> endX >> endY;
        
        // 좌표가 사각형 기준 오른쪽위, 왼쪽 아래인 경우 -> 왼쪽 위, 오른쪽 아래로 좌표 수정 
        int sx = min(startX, endX);
        int sy = min(startY, endY);
        int ex = max(startX, endX);
        int ey = max(startY, endY);
        
        cout << dp[ex][ey] - dp[sx-1][ey] - dp[ex][sy-1+ dp[sx-1][sy-1<< endl;
    }
    
    return 0;
}
cs

+ Recent posts