Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Lekciq;
- import java.util.Arrays;
- import java.util.Scanner;
- public class WrongMeasurements {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int rows = Integer.parseInt(scanner.nextLine());
- int[][] matrix = inputMatrix(scanner, rows, "\\s+");
- int[] indexes = Arrays.stream(scanner.nextLine().split("\\s+"))
- .mapToInt(Integer::parseInt)
- .toArray();
- int number = matrix[indexes[0]][indexes[1]];
- int[][] outputMatrix = fixMatrix(matrix, number);
- printMatrix(outputMatrix);
- }
- private static int[][] fixMatrix(int[][] matrix, int number) {
- int[][] outputMatrix = new int[matrix.length][];
- for (int row = 0; row < matrix.length; row++) {
- outputMatrix[row] = new int[matrix[row].length];
- for (int col = 0; col < matrix[row].length; col++) {
- if (matrix[row][col] == number) {
- int sum = calculateSum(matrix, row, col, number);
- outputMatrix[row][col] = sum;
- } else {
- outputMatrix[row][col] = matrix[row][col];
- }
- }
- }
- return outputMatrix;
- }
- private static int calculateSum(int[][] matrix, int row, int col, int number) {
- int sum = 0;
- int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
- for (int[] dir : directions) {
- int newRow = row + dir[0];
- int newCol = col + dir[1];
- if (isValid(newRow, newCol, matrix.length, matrix[0].length) && matrix[newRow][newCol] != number) {
- sum += matrix[newRow][newCol];
- }
- }
- return sum;
- }
- private static boolean isValid(int row, int col, int numRows, int numCols) {
- return row >= 0 && row < numRows && col >= 0 && col < numCols;
- }
- private static void printMatrix(int[][] outputMatrix) {
- for (int[] row : outputMatrix) {
- for (int num : row) {
- System.out.print(num + " ");
- }
- System.out.println();
- }
- }
- private static int[][] inputMatrix(Scanner scanner, int rows, String pattern) {
- int[][] matrix = new int[rows][];
- for (int row = 0; row < rows; row++) {
- matrix[row] = Arrays.stream(scanner.nextLine().split(pattern))
- .mapToInt(Integer::parseInt)
- .toArray();
- }
- return matrix;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement