Guest User

Untitled

a guest
Dec 25th, 2019
608
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.86 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.nio.charset.StandardCharsets;
  5. import java.util.*;
  6. import java.util.stream.Collectors;
  7.  
  8. public class Test {
  9.  
  10.     public static void main(String[] args) throws IOException {
  11.         final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
  12.  
  13.         String[] dimensions = reader.readLine().trim().split("\\s+");
  14.         final int rows = Integer.parseInt(dimensions[0]);
  15.         final int cols = Integer.parseInt(dimensions[1]);
  16.  
  17.         int[][] matrix = new int[rows][cols];
  18.  
  19.         for (int i = 0; i < rows; i++) {
  20.             matrix[i] = Arrays.stream(reader.readLine().trim().split("\\s+"))
  21.                     .mapToInt(Integer::parseInt).toArray();
  22.         }
  23.  
  24.         Map<Integer, List<Integer>> diagonals = new LinkedHashMap<>();
  25.         for (int group = 0, diagonal = 0, row = rows - 1; row >= 0; row--, diagonal = ++group) {
  26.             for (int col = cols - 1; col >= 0 && col >= group; col--, diagonal++) {
  27.                 addValueToDiagonal(diagonals, matrix[row][col], diagonal);
  28.             }
  29.  
  30.             for (int r = rows - 1 - 1 - group; r >= 0 && group < cols; r--, diagonal++) {
  31.                 addValueToDiagonal(diagonals, matrix[r][group], diagonal);
  32.             }
  33.         }
  34.  
  35.         final StringBuilder sb = new StringBuilder();
  36.  
  37.         diagonals.values().forEach(numbers -> sb
  38.                 .append(numbers.stream().map(Object::toString).collect(Collectors.joining(" ")))
  39.                 .append(System.lineSeparator()));
  40.  
  41.         System.out.print(sb);
  42.     }
  43.  
  44.     private static void addValueToDiagonal(Map<Integer, List<Integer>> diagonals, int value, int diagonal) {
  45.         diagonals.putIfAbsent(diagonal, new ArrayList<>());
  46.         diagonals.get(diagonal).add(value);
  47.     }
  48. }
Add Comment
Please, Sign In to add comment