Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- public class Crossfire {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String[] input = in.nextLine().split(" ");
- // FILL MATRIX
- int rows = Integer.parseInt(input[0]);
- int cols = Integer.parseInt(input[1]);
- int[][] matrix = new int[rows][cols];
- int number = 0;
- for (int i = 0; i < rows; i++) {
- for (int j = 0; j < cols; j++) {
- number++;
- matrix[i][j] = number;
- }
- }
- // CROSSFIRE
- String line = in.nextLine();
- while (!line.equals("Nuke it from orbit")) {
- String[] crossfire = line.split(" ");
- int cfrow = Integer.parseInt(crossfire[0]);
- int cfcol = Integer.parseInt(crossfire[1]);
- int cfrange = Integer.parseInt(crossfire[2]);
- int[][] newMatrix = cfblast(matrix, cfrow, cfcol, cfrange);
- matrix = newMatrix.clone();
- line = in.nextLine();
- }
- for (int i = 0; i < matrix.length; i++) {
- for (int j = 0; j < matrix[i].length; j++) {
- if (matrix[i][j] != 0) {
- System.out.print(matrix[i][j] + " ");
- }
- }
- System.out.println();
- }
- }
- private static int[][] cfblast(int[][] matrix, int cfrow, int cfcol, int cfrange) {
- // HORIZONTAL BLAST
- for (int col = Math.max(0, cfcol - cfrange); col < Math.min(matrix[0].length, cfcol + cfrange + 1); col++) {
- matrix[cfrow][col] = 0;
- }
- // VERTICAL BLAST
- for (int row = Math.max(0, cfrow - cfrange); row < Math.min(matrix.length, cfrow + cfrange + 1); row++) {
- matrix[row][cfcol] = 0;
- }
- for (int i = 0; i < matrix.length; i++) {
- List<Integer> line = new ArrayList<>();
- int zerosCount = 0;
- for (int j = 0; j < matrix[i].length; j++) {
- if (matrix[i][j] != 0) {
- line.add(matrix[i][j]);
- } else {
- zerosCount++;
- }
- }
- for (int j = 0; j < zerosCount; j++) {
- line.add(0);
- }
- int[] lineArr = line.stream().mapToInt(Integer::intValue).toArray();
- matrix[i] = lineArr;
- }
- return matrix;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement