mellowdeep

parking

Mar 28th, 2016
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.00 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.Scanner;
  4.  
  5. public class P_20160228 {
  6.  
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.         String[] matrixSize = scanner.nextLine().split(" ");
  10.         int rowSize = Integer.parseInt(matrixSize[0]);
  11.         int columnSize = Integer.parseInt(matrixSize[1]);
  12.         HashMap<Integer, ArrayList<Integer>> matrix = new HashMap<>();
  13.         String cmd = scanner.nextLine();
  14.         while (!cmd.equals("stop")) {
  15.             String[] parkingSpot = cmd.split(" ");
  16.             int startPos = Integer.parseInt(parkingSpot[0]);
  17.             int row = Integer.parseInt(parkingSpot[1]);
  18.             int column = Integer.parseInt(parkingSpot[2]);
  19.             Boolean freeSpot = false;
  20.             int closestPos = column;
  21.  
  22.             if (!matrix.containsKey(row)) {
  23.                 matrix.put(row, new ArrayList<Integer>());
  24.                 fillArray(matrix, row, columnSize);
  25.                 matrix.get(row).set(column, 1);
  26.                 freeSpot = true;
  27.  
  28.             } else if (matrix.containsKey(row)
  29.                     && matrix.get(row).get(column) != 1) {
  30.                 matrix.get(row).set(column, 1);
  31.                 freeSpot = true;
  32.  
  33.             } else {
  34.                 int marker = column;
  35.                 for (int i = column; i > 0; i--) {
  36.                     if (matrix.get(row).get(i) != 1) {
  37.                         marker = column - i;
  38.                         closestPos = i;
  39.                         freeSpot = true;
  40.                         break;
  41.                     }
  42.  
  43.                 }
  44.  
  45.                 for (int i = column; i < columnSize; i++) {
  46.  
  47.                     if (matrix.get(row).get(i) != 1) {
  48.                        
  49.                         if (marker == column || marker > (i - column)) {
  50.                             closestPos = i;
  51.                         }
  52.                         freeSpot = true;
  53.                         break;
  54.                     }
  55.                 }
  56.  
  57.             }
  58.             if (!freeSpot) {
  59.                 System.out.printf("Row %d full\n", row);
  60.  
  61.             } else {
  62.                 matrix.get(row).set(closestPos, 1);
  63.                 int countSteps = (Math.abs(startPos - row) + closestPos + 1);
  64.                 System.out.println(countSteps);
  65.  
  66.             }
  67.             cmd = scanner.nextLine();
  68.         }
  69.     }
  70.  
  71.     private static void fillArray(HashMap<Integer, ArrayList<Integer>> matrix,
  72.             int row, int column) {
  73.         matrix.get(row).add(0, 1);
  74.         for (int i = 1; i < column; i++) {
  75.             matrix.get(row).add(i, 0);
  76.         }
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment