Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class MatrixMaxSumByCoordinates {
- static int max(int a, int b) {
- if(a > b)return a;
- else return b;
- }
- static int moveAndSumRow(int[][] matr, int row, int col) {
- int sum = 0;
- if (row >= 0) {
- for (int i = 0; i < max(col, col * (-1)); i++) {
- sum += matr[row - 1][i];
- }
- return sum;
- } else {
- row *= -1;
- for (int i = matr[0].length - 1; i >= max(col, col * (-1)) - 1; i--) {
- sum += matr [row - 1][i];
- }return sum;
- }
- }
- static int moveAndSumCol(int[][] matr, int row, int col) {
- int sum = 0;
- if (row < 0) row = row * (-1);
- if (col > 0) {
- if (row - 1 == 0) return 0;
- for (int i = row - 2; i <= 0; i--) {
- sum += matr[i][col - 1];
- }
- return sum;
- } else {
- col = col * (-1);
- if(row == matr.length)return 0;
- for (int i = row ; i < matr.length; i++) {
- sum += matr[i][col - 1];
- }return sum;
- }
- }
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- int rowsNumber = Integer.parseInt(br.readLine());
- String[] firstRow = br.readLine().split(" ");
- int colsNumber = firstRow.length;
- int[][] matrix = new int[rowsNumber][colsNumber];
- for (int i = 0; i < colsNumber; i++) {
- matrix[0][i] = Integer.parseInt(firstRow[i]);
- }
- for (int i = 1; i < rowsNumber; i++) {
- String[] newRow = br.readLine().split(" ");
- for (int j = 0; j < colsNumber; j++) {
- matrix[i][j] = Integer.parseInt(newRow[j]);
- // System.out.print( matrix[i][j] );
- }
- //System.out.println();
- }
- // System.out.println();
- // printMatrix(matrix);
- String[] coords = br.readLine().split(" ");
- int[] rowCor = new int[coords.length / 2];
- int[] colCor = new int[coords.length / 2];
- for (int i = 0; i < coords.length; i++) {
- if (i % 2 == 0) rowCor[i / 2] = Integer.parseInt(coords[i]);
- }
- for (int i = 1; i < coords.length ; i++) {
- if( i % 2 != 0) colCor[i / 2] = Integer.parseInt(coords[i]);
- }
- // System.out.println(Arrays.toString(rowCor).replaceAll("\\[|\\]|,|\\s", ""));
- // System.out.println(Arrays.toString(colCor).replaceAll("\\[|\\]|,|\\s", ""));
- // int[][] newP = {rowCor, colCor};
- // System.out.println();
- //printMatrix(newP);
- int maxSum = Integer.MIN_VALUE;
- int crntSum = 0;
- for (int i = 0; i < rowCor.length; i++) {
- crntSum += moveAndSumRow(matrix, rowCor[i], colCor[i])
- + moveAndSumCol(matrix, rowCor[i], colCor[i]);
- maxSum = Math.max(maxSum, crntSum);
- crntSum = 0;
- }
- System.out.println(maxSum);
- }
- static void printMatrix(int[][] matr) {
- for (int i = 0; i < matr.length; i++) {
- for (int j = 0; j < matr[0].length; j++) {
- System.out.print(matr[i][j]);
- }
- System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement