LardaX

CubicArtillery

Feb 11th, 2017
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.92 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayDeque;
  5. import java.util.ArrayList;
  6. import java.util.Deque;
  7. import java.util.List;
  8. import java.util.stream.Collectors;
  9.  
  10. public class CubicArtillery {
  11.     public static void main(String[] args) throws IOException {
  12.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  13.         int capacity = Integer.parseInt(reader.readLine());
  14.  
  15.         Deque<Bunker> bunkers = new ArrayDeque<>();
  16.         Deque<Integer> weapons = new ArrayDeque<>();
  17.  
  18.         String input = "";
  19.  
  20.         while (!"Bunker Revision".equals(input = reader.readLine())) {
  21.             String[] tokens = input.split(" ");
  22.  
  23.             for (String token : tokens) {
  24.                 if (Character.isDigit(token.charAt(0))) {
  25.                     int weapon = Integer.parseInt(token);
  26.                     weapons.add(weapon);
  27.                 } else {
  28.                     String name = token;
  29.                     Bunker bunker = new Bunker(name, capacity);
  30.                     bunkers.add(bunker);
  31.                 }
  32.             }
  33.         }
  34.  
  35.         while (!weapons.isEmpty()) {
  36.             Integer currentWeapon = weapons.poll();
  37.             Bunker currentBunker = bunkers.poll();
  38.             int currentCapacity = currentBunker.getCapacity();
  39.             int difference = currentCapacity - currentWeapon;
  40.             if (difference >= 0) {
  41.                 currentBunker.getWeapons().add(currentWeapon);
  42.                 currentBunker.setCapacity(difference);
  43.                 bunkers.push(currentBunker);
  44.             } else {
  45.                 System.out.print(currentBunker.getName() + " -> ");
  46.                 StringBuilder sb = new StringBuilder();
  47.                 for (Integer integer : currentBunker.getWeapons()) {
  48.                     sb.append(integer).append(", ");
  49.                 }
  50.                 sb.delete(sb.length() - 2, sb.length());
  51.                 System.out.println(sb);
  52.  
  53.                 weapons.push(currentWeapon);
  54.             }
  55.         }
  56.  
  57.  
  58.     }
  59.     static class Bunker {
  60.         private String name;
  61.         private List<Integer> weapons;
  62.         private Integer capacity;
  63.  
  64.         public Bunker(String name, Integer capacity) {
  65.             this.name = name;
  66.             this.weapons = new ArrayList<>();
  67.             this.capacity = capacity;
  68.         }
  69.  
  70.         public String getName() {
  71.             return name;
  72.         }
  73.  
  74.         public void setName(String name) {
  75.             this.name = name;
  76.         }
  77.  
  78.         public List<Integer> getWeapons() {
  79.             return weapons;
  80.         }
  81.  
  82.         public void setWeapons(List<Integer> weapons) {
  83.             this.weapons = weapons;
  84.         }
  85.  
  86.         public Integer getCapacity() {
  87.             return capacity;
  88.         }
  89.  
  90.         public void setCapacity(Integer capacity) {
  91.             this.capacity = capacity;
  92.         }
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment