on
[백준][Java] 11660번 구간 합 구하기 5 (누적합)
[백준][Java] 11660번 구간 합 구하기 5 (누적합)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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 = stoi(str[ 0 ]);
int M = stoi(str[ 1 ]);
int [][] table = new int [N + 1 ][N + 1 ];
int [][] preSum = new int [N + 1 ][N + 1 ];
for ( int i = 1 ; i < = N; i + + ) {
str = br.readLine(). split ( " " );
for ( int j = 1 ; j < = N; j + + ) {
table[i][j] = stoi(str[j - 1 ]);
preSum[i][j] =
preSum[i - 1 ][j] + preSum[i][j - 1 ]
- preSum[i - 1 ][j - 1 ] + table[i][j];
}
}
for ( int i = 1 ; i < = M; i + + ) {
str = br.readLine(). split ( " " );
int x1 = stoi(str[ 0 ]);
int y1 = stoi(str[ 1 ]);
int x2 = stoi(str[ 2 ]);
int y2 = stoi(str[ 3 ]);
int res =
preSum[x2][y2]
- preSum[x1 - 1 ][y2] - preSum[x2][y1 - 1 ]
+ preSum[x1 - 1 ][y1 - 1 ];
System . out . println (res);
}
// bw.write("");
// bw.flush();
// bw.close();
}
private static int stoi( String input) {
return Integer. parseInt (input);
}
}
from http://aig2029.tistory.com/286 by ccl(A) rewrite - 2021-09-19 04:27:50