반응형
문제 링크 : https://www.acmicpc.net/problem/2167
문제 내용
2차원 배열이 주어졌을 때 (i, j) 위치부터 (x, y) 위치까지에 저장되어 있는 수들의 합을 구하는 프로그램을 작성하시오. 배열의 (i, j) 위치는 i행 j열을 나타낸다.
소스코드
#include <iostream>
using namespace std;
int main() {
// your code goes here
int X, Y;
int ** arr;
int ** sum_arr;
cin >> X; cin >> Y;
arr = new int*[X+2];
sum_arr = new int*[X+2];
for(int i=0; i<=X+1; i++){
arr[i] = new int[Y+2];
sum_arr[i] = new int[Y+2];
}
for(int i=1; i<X+1; i++){
for(int j=1; j<Y+1; j++){
cin >> arr[i][j];
}
}
for(int i=0; i<=X+1; i++){
arr[i][0] = 0;
sum_arr[i][0] = 0;
}
for(int j=0; j<=Y+1; j++){
arr[0][j] = 0;
sum_arr[0][j] = 0;
}
for(int i=1; i<X+1; i++){
for(int j=1; j<Y+1; j++){
sum_arr[i][j] = sum_arr[i][j-1] + sum_arr[i-1][j] - sum_arr[i-1][j-1] + arr[i][j];
}
}
int K, i,j,x,y;
cin >> K;
for(int k=0; k<K; k++){
cin >> i; cin >> j; cin >> x; cin >> y;
cout << (sum_arr[x][y] - sum_arr[x][j-1] - sum_arr[i-1][y] + sum_arr[i-1][j-1]) << endl;
}
return 0;
}반응형
'컴퓨터 > Online Judge' 카테고리의 다른 글
| [acmicpc.net] 2293 동전 1 (0) | 2016.09.20 |
|---|---|
| [acmicpc.net] 1932 숫자삼각형 (0) | 2016.09.18 |
| [acmicpc.net] 2579 계단 오르기 (0) | 2016.09.09 |
| [acmicpc.net] 2193 이친수 (0) | 2016.09.08 |
| [acmicpc.net] 1463 1로 만들기 (0) | 2016.09.07 |