Advertisement
vladimirVenkov

MatrixSum

Jun 12th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.45 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. public class MatrixMaxSumByCoordinates {
  6.  
  7.     static int max(int a, int b) {
  8.         if(a > b)return a;
  9.         else return b;
  10.     }
  11.  
  12.     static int moveAndSumRow(int[][] matr, int row, int col) {
  13.         int sum = 0;
  14.         if (row >= 0) {
  15.             for (int i = 0; i < max(col, col * (-1)); i++) {
  16.                 sum += matr[row - 1][i];
  17.             }
  18.             return sum;
  19.         } else {
  20.             row *= -1;
  21.             for (int i = matr[0].length - 1; i >= max(col, col * (-1)) - 1; i--) {
  22.                 sum += matr [row - 1][i];
  23.             }return sum;
  24.         }
  25.     }
  26.  
  27.     static int moveAndSumCol(int[][] matr, int row, int col) {
  28.         int sum = 0;
  29.         if (row < 0) row = row * (-1);
  30.         if (col > 0) {
  31.  
  32.             if (row - 1 == 0)     return  0;
  33.  
  34.             for (int i = row - 2; i <= 0; i--) {
  35.                 sum += matr[i][col - 1];
  36.             }
  37.             return sum;
  38.         } else {
  39.  
  40.             col = col * (-1);
  41.             if(row == matr.length)return 0;
  42.             for (int i = row ; i < matr.length; i++) {
  43.                 sum += matr[i][col - 1];
  44.             }return sum;
  45.         }
  46.     }
  47.  
  48.     public static void main(String[] args) throws IOException {
  49.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  50.  
  51.         int rowsNumber = Integer.parseInt(br.readLine());
  52.         String[] firstRow = br.readLine().split(" ");
  53.         int colsNumber = firstRow.length;
  54.         int[][] matrix = new int[rowsNumber][colsNumber];
  55.         for (int i = 0; i < colsNumber; i++) {
  56.             matrix[0][i] = Integer.parseInt(firstRow[i]);
  57.         }
  58.         for (int i = 1; i < rowsNumber; i++) {
  59.             String[] newRow = br.readLine().split(" ");
  60.             for (int j = 0; j < colsNumber; j++) {
  61.                 matrix[i][j] = Integer.parseInt(newRow[j]);
  62.                // System.out.print( matrix[i][j] );
  63.             }
  64.             //System.out.println();
  65.         }
  66. //        System.out.println();
  67. //        printMatrix(matrix);
  68.         String[] coords = br.readLine().split(" ");
  69.         int[] rowCor = new int[coords.length / 2];
  70.         int[] colCor = new int[coords.length / 2];
  71.  
  72.         for (int i = 0; i < coords.length; i++) {
  73.             if (i % 2 == 0) rowCor[i / 2] = Integer.parseInt(coords[i]);
  74.         }
  75.         for (int i = 1; i < coords.length ; i++) {
  76.             if( i % 2 != 0) colCor[i / 2] = Integer.parseInt(coords[i]);
  77.         }
  78. //        System.out.println(Arrays.toString(rowCor).replaceAll("\\[|\\]|,|\\s", ""));
  79. //        System.out.println(Arrays.toString(colCor).replaceAll("\\[|\\]|,|\\s", ""));
  80. //        int[][] newP = {rowCor, colCor};
  81. //        System.out.println();
  82.         //printMatrix(newP);
  83.  
  84.         int maxSum = Integer.MIN_VALUE;
  85.         int crntSum = 0;
  86.         for (int i = 0; i < rowCor.length; i++) {
  87.             crntSum  += moveAndSumRow(matrix, rowCor[i], colCor[i])
  88.                     + moveAndSumCol(matrix, rowCor[i], colCor[i]);
  89.             maxSum = Math.max(maxSum, crntSum);
  90.             crntSum = 0;
  91.         }
  92.         System.out.println(maxSum);
  93.     }
  94.  
  95.     static void printMatrix(int[][] matr) {
  96.         for (int i = 0; i < matr.length; i++) {
  97.             for (int j = 0; j < matr[0].length; j++) {
  98.                 System.out.print(matr[i][j]);
  99.             }
  100.             System.out.println();
  101.         }
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement