Advertisement
vladimirVenkov

matrix wrg

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