블로그 언저리인 무언가
[백준/BOJ] 15724 주지수 본문
728x90
문제 : 15724 주지수
직사각형의 범위가 주어질 때 그 안에 사는 사람 수의 합을 출력하는 문제이다.
배열의 길이가 N, 주어지는 범위의 개수가 M일 때 그냥 구하게 되면
O(N^2*M)으로 시간 초과이므로 누적합 배열을 이용해
시간을 O(N^2+M)으로 줄여서 구하면 된다.
Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll N, M, T, arr[1050][1050];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for (int i=1;i<=N;i++){
for (int j=1;j<=M;j++){
ll a;
cin >> a;
arr[i][j]=a+arr[i-1][j]+arr[i][j-1]-arr[i-1][j-1];
}
}
cin >> T;
while (T--){
ll x1, x2, y1, y2;
cin >> x1 >> y1 >> x2 >> y2;
cout << arr[x2][y2]-arr[x1-1][y2]-arr[x2][y1-1]+arr[x1-1][y1-1] << "\n";
}
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[백준/BOJ] 1753 최단경로 (0) | 2020.09.26 |
---|---|
[백준/BOJ] 17953 디저트 (0) | 2020.09.25 |
[백준/BOJ] 1342 행운의 문자열 (0) | 2020.09.24 |
[백준/BOJ] 14499 주사위 굴리기 (0) | 2020.09.23 |
[백준/BOJ] 4811 알약 (0) | 2020.09.22 |
Comments