Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.codeit08_04;
- import java.io.*;
- public class B_Diagonals {
- public static void main(String[] args) throws IOException {
- File file = new File("diagonalsum.in");
- FileReader fr = new FileReader(file);
- BufferedReader reader = new BufferedReader(fr);
- int matrixSize = Integer.parseInt(reader.readLine());
- int[][] matrix = new int[matrixSize][matrixSize];
- for (int i = 0; i < matrixSize; i++) {
- matrix[i] = intParse(reader.readLine().split(" "));
- }
- int[] rightDiag = new int[matrixSize * 2 - 1];
- int[] leftDiag = new int[matrixSize * 2 - 1];
- for (int r = 0, c = 0; c < matrixSize; c++) {
- int sum = 0;
- for (int row = r, col = c; col < matrixSize; row++, col++) {
- sum += matrix[row][col];
- }
- rightDiag[matrixSize - 1 + c] = sum;
- }
- for (int r = 1, c = 0; r < matrixSize; r++) {
- int sum = 0;
- for (int row = r, col = c; row < matrixSize; row++, col++) {
- sum += matrix[row][col];
- }
- rightDiag[matrixSize - 1 - r] = sum;
- }
- for (int r = 0, c = matrixSize - 1; c >= 0; c--) {
- int sum = 0;
- for (int row = r, col = c; col >= 0; row++, col--) {
- sum += matrix[row][col];
- }
- leftDiag[matrixSize - 1 - (matrixSize - 1 - c)] = sum;
- }
- for (int r = 1, c = matrixSize - 1; r < matrixSize; r++) {
- int sum = 0;
- for (int row = r, col = c; row < matrixSize; row++, col--) {
- sum += matrix[row][col];
- }
- leftDiag[matrixSize - 1 + r] = sum;
- }
- int count = Integer.parseInt(reader.readLine());
- StringBuilder output = new StringBuilder();
- for (int i = 0; i < count; i++) {
- int[] pos = intParse(reader.readLine().split(" "));
- pos[0]--;
- pos[1]--;
- int rightPos = matrixSize - 1 - (pos[0] - pos[1]);
- int right = rightDiag[rightPos];
- int leftPos = pos[1] + pos[0];
- int left = leftDiag[leftPos];
- int element = matrix[pos[0]][pos[1]];
- int result = right + left - element;
- output.append(result).append(System.lineSeparator());
- }
- try (
- OutputStream outputStream = new FileOutputStream("diagonalsum.out");
- BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream))
- ) {
- bufferedWriter.write(output.toString());
- bufferedWriter.flush();
- }
- }
- private static int[] intParse(String[] elements) {
- int[] ints = new int[elements.length];
- for (int i = 0; i < elements.length; i++) {
- ints[i] = Integer.parseInt(elements[i]);
- }
- return ints;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement