ivanov_ivan

Crossfire

May 5th, 2016
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.13 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class Crossfire { //100/100
  6.     public static void main(String[] args) {
  7.         Scanner sc = new Scanner(System.in);
  8.         String[] dim = sc.nextLine().split("\\s+");
  9.         int rows = Integer.parseInt(dim[0]);
  10.         int colums = Integer.parseInt(dim[1]);
  11.  
  12.         List<List<Integer>> matrix = new ArrayList<>();
  13.         int counter = 1;
  14.         for (int i = 0; i < rows; i++) {
  15.             List<Integer> currLine = new ArrayList<>();
  16.             for (int j = 0; j < colums; j++) {
  17.                 currLine.add(counter);
  18.                 counter++;
  19.             }
  20.             matrix.add(currLine);
  21.         }
  22.         String command = sc.nextLine();
  23.  
  24.         while (!command.equals("Nuke it from orbit")){
  25.             String[] target = command.split("\\s+");
  26.             int targetRow = Integer.parseInt(target[0]);
  27.             int targetColumn= Integer.parseInt(target[1]);
  28.             int targetRadius = Integer.parseInt(target[2]);
  29.  
  30.             for (int i = targetColumn - targetRadius; i <= targetColumn + targetRadius; i++) {
  31.                 if (targetRow >= 0 && targetRow < matrix.size() && i < matrix.get(targetRow).size() && i >= 0) {
  32.                     matrix.get(targetRow).set(i,0);
  33.                 }
  34.             }
  35.  
  36.             for (int i = targetRow - targetRadius; i <= targetRow + targetRadius; i++) {
  37.                 if (i >= 0 && i < matrix.size() && targetColumn >= 0 && targetColumn < matrix.get(i).size()) {
  38.                     matrix.get(i).set(targetColumn,0);
  39.                 }
  40.             }
  41.  
  42.             for (int i = 0; i < matrix.size(); i++) {
  43.                 if (matrix.get(i).stream().mapToInt(Integer::valueOf).sum() == 0) {
  44.                     matrix.remove(i);
  45.                     //rows--;
  46.                     i--;
  47.                 } else {
  48.                     for (int j = 0; j < matrix.get(i).size(); j++) {
  49.                         if (matrix.get(i).get(j) == 0) {
  50.                             int index = 0;
  51.                             boolean toSwap = false;
  52.                             for (int k = j; k < matrix.get(i).size(); k++) {
  53.                                 if (matrix.get(i).get(k) != 0){
  54.                                     index = k;
  55.                                     toSwap = true;
  56.                                     break;
  57.                                 }
  58.                             }
  59.                             if (toSwap){
  60.  
  61.                                 matrix.get(i).set(j, matrix.get(i).get(index));
  62.                                 matrix.get(i).set(index, 0);
  63.                             }
  64.                         }
  65.                     }
  66.                 }
  67.  
  68.             }
  69.             command = sc.nextLine();
  70.         }
  71.  
  72.         for (int i = 0; i < matrix.size(); i++) {
  73.             String row = "";
  74.             for (int j = 0; j < matrix.get(i).size(); j++) {
  75.                 if (matrix.get(i).get(j)!=0){
  76.                     row += matrix.get(i).get(j) + " ";
  77.                 }
  78.             }
  79.             row = row.trim();
  80.             System.out.println(row);
  81.         }
  82.     }
  83. }
Add Comment
Please, Sign In to add comment