어흥

[백준 11660] 구간 합 구하기 5 (C++) 본문

알고리즘/백준

[백준 11660] 구간 합 구하기 5 (C++)

라이언납시오 2020. 12. 30. 21:02
728x90
반응형

문제 링크: www.acmicpc.net/problem/11660

 

11660번: 구간 합 구하기 5

첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네

www.acmicpc.net

1. 주의할 점

- 매 TC마다 구하지 않고, 각 열의 1~N까지의 합을 Arr[][N]에 저장한다

 

2. 구현

- Arr[M][N] = Arr[M][N-1] + [M][N]에 입력받는 수를 저장한다

- 각 쿼리마다 Arr[][Y2]-Arr[][Y1-1] 까지의 합을 X1~X2행까지 수행하여 출력한다

#include <iostream>
using namespace std;

long long arr[1025][1025];
int num, query, a, b, c, d;

int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	cin >> num >> query;
	for(int i=1;i<=num;i++)
		for (int j = 1; j <= num; j++) {
			cin >> arr[i][j];
			arr[i][j] += arr[i][j - 1];
		}
	for (int i = 0; i < query; i++) {
		cin >> a >> b >> c >> d;
		long long result = 0;
		for (int j = a; j <= c; j++)
			result += (arr[j][d] - arr[j][b-1]);
		cout << result << '\n';
	}
	return 0;
}
728x90
반응형
Comments