1일1알

백준 15724번 주지수 C++ 본문

알고리즘

백준 15724번 주지수 C++

영춘권의달인 2022. 10. 24. 16:10

https://www.acmicpc.net/problem/15724

 

15724번: 주지수

네모 왕국의 왕인 진경대왕은 왕국의 영토를 편하게 통치하기 위해서 1X1의 단위 구역을 여러 개 묶어서 하나의 거대 행정구역인 주지수(州地數, 마을의 땅을 셈)를 만들 예정이다. 진경대왕은

www.acmicpc.net

 

누적합

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>

using namespace std;
using int64 = long long;

int n, m;

vector<vector<int>> rowSum;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    cin >> n >> m;
    rowSum = vector<vector<int>>(n + 1, vector<int>(m + 1, 0));

    for (int i = 1; i <= n; i++) {
        int sum = 0;
        for (int j = 1; j <= m; j++) {
            int input;
            cin >> input;
            sum += input;
            rowSum[i][j] = sum;
        }
    }
    int k;
    int row1, row2, col1, col2;
    cin >> k;
    for (int i = 0; i < k; i++) {
        int sum = 0;
        cin >> row1 >> col1 >> row2 >> col2;
        for (int j = row1; j <= row2; j++) {
            sum += rowSum[j][col2] - rowSum[j][col1 - 1];
        }
        cout << sum << "\n";
    }
}