on
[백준][Java] 2167번 2차원 배열의 합 (누적합)
[백준][Java] 2167번 2차원 배열의 합 (누적합)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
private static BufferedReader br = new BufferedReader( new InputStreamReader( System . in ));
private static BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( System . out ));
public static void main( String [] args) throws IOException{
String [] str = br.readLine(). split ( " " );
int N = Integer. parseInt (str[ 0 ]);
int M = Integer. parseInt (str[ 1 ]);
int [][] arr = new int [N + 1 ][M + 1 ];
int [][] accum = new int [N + 1 ][M + 1 ];
for ( int i = 1 ; i < = N; i + + ) {
StringTokenizer stk = new StringTokenizer(br.readLine(), " " );
for ( int j = 1 ; j < = M; j + + ) {
arr[i][j] = Integer. parseInt (stk.nextToken());
accum[i][j] = accum[i][j - 1 ] + accum[i - 1 ][j] - accum[i - 1 ][j - 1 ] + arr[i][j];
}
}
int K = Integer. parseInt (br.readLine());
for ( int m = 1 ; m < = K; m + + ) {
str = br.readLine(). split ( " " );
int i = Integer. parseInt (str[ 0 ]);
int j = Integer. parseInt (str[ 1 ]);
int x = Integer. parseInt (str[ 2 ]);
int y = Integer. parseInt (str[ 3 ]);
int res = accum[x][y] - accum[i - 1 ][y] - accum[x][j - 1 ] + accum[i - 1 ][j - 1 ];
System . out . println (res);
}
// bw.write("");
// bw.flush();
// bw.close();
}
}
from http://aig2029.tistory.com/281 by ccl(A) rewrite - 2021-09-18 06:01:51