emodev

Untitled

Dec 11th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.29 KB | None | 0 0
  1. package pfRetake_27Aug_2;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.HashMap;
  7.  
  8. public class IronGirder {
  9.     public static void main(String[] args) throws IOException {
  10.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  11.  
  12.         HashMap<String, Girder> girders = new HashMap<>();
  13.         while (true) {
  14.             String input = reader.readLine();
  15.             if ("Slide rule".equals(input)) {
  16.                 break;
  17.             }
  18.             String[] tokens = input.split(":");
  19.             String townName = tokens[0];
  20.  
  21.             String[] timePassengers = tokens[1].split("->");
  22.  
  23. //            If it's not ambushed
  24.             if (!timePassengers[0].equals("ambush")) {
  25.                 int time = Integer.parseInt(timePassengers[0]);
  26.                 int passengers = Integer.parseInt(timePassengers[1]);
  27.  
  28.                 if (!girders.containsKey(townName)) {
  29.                     Girder girder = new Girder(townName, time, passengers);
  30.                     girders.put(townName, girder);
  31.                 } else {
  32.                     Girder girder = girders.get(townName);
  33.                     if (time < girder.getTime() || girder.getTime() == 0) {
  34.                         girder.setTime(time);
  35.                     }
  36.                     girder.addPassengers(passengers);
  37.                 }
  38.             }
  39. //            TODO:If it's ambushed
  40.             else {
  41.                 if (girders.containsKey(townName)) {
  42.                     int passengers = Integer.parseInt(timePassengers[1]);
  43.                     Girder girder = girders.get(townName);
  44.                     girder.setTime(0);
  45.                     girder.removePassengers(passengers);
  46.                 }
  47.  
  48.  
  49.             }
  50.  
  51.         }
  52.  
  53.         girders.entrySet().stream().sorted((e1,e2) -> {
  54.             int compare = Integer.compare(e1.getValue().getTime(),e2.getValue().getTime());
  55.             if (compare == 0){
  56.                 return e1.getKey().compareTo(e2.getKey());
  57.             } return compare;
  58.         }).forEach(e -> {
  59.             if (e.getValue().getTime() <= 0 || e.getValue().getPassengers() <= 0){
  60.  
  61.             }
  62.             else {
  63.                 System.out.printf("%s -> Time: %d -> Passengers: %d%n",e.getKey()
  64.                         ,e.getValue().getTime(),e.getValue().getPassengers());
  65.             }
  66.         });
  67.  
  68.  
  69.     }
  70. }
  71.  
  72. class Girder {
  73.     private String town;
  74.     private int time;
  75.     private int passengers;
  76.  
  77.     public Girder(String town, int time, int passengers) {
  78.         this.town = town;
  79.         this.time = time;
  80.         this.passengers = passengers;
  81.     }
  82.  
  83.     public String getTown() {
  84.         return town;
  85.     }
  86.  
  87.     public void setTown(String town) {
  88.         this.town = town;
  89.     }
  90.  
  91.     public int getTime() {
  92.         return time;
  93.     }
  94.  
  95.     public void setTime(int time) {
  96.         this.time = time;
  97.     }
  98.  
  99.     public int getPassengers() {
  100.         return passengers;
  101.     }
  102.  
  103.     public void addPassengers(int passengers) {
  104.         this.passengers += passengers;
  105.     }
  106.  
  107.     public void removePassengers(int passengers){
  108.         this.passengers -= passengers;
  109.     }
  110.  
  111.     public void setPassengers(int passengers) {
  112.             this.passengers = passengers;
  113.  
  114.     }
  115. }
Add Comment
Please, Sign In to add comment