emodev

iron girder

Dec 11th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.25 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.                 System.out.printf("%s -> Time: %d -> Passengers: %d%n",e.getKey()
  61.                         ,e.getValue().getTime(),e.getValue().getPassengers());
  62.             }
  63.         });
  64.  
  65.  
  66.     }
  67. }
  68.  
  69. class Girder {
  70.     private String town;
  71.     private int time;
  72.     private int passengers;
  73.  
  74.     public Girder(String town, int time, int passengers) {
  75.         this.town = town;
  76.         this.time = time;
  77.         this.passengers = passengers;
  78.     }
  79.  
  80.     public String getTown() {
  81.         return town;
  82.     }
  83.  
  84.     public void setTown(String town) {
  85.         this.town = town;
  86.     }
  87.  
  88.     public int getTime() {
  89.         return time;
  90.     }
  91.  
  92.     public void setTime(int time) {
  93.         this.time = time;
  94.     }
  95.  
  96.     public int getPassengers() {
  97.         return passengers;
  98.     }
  99.  
  100.     public void addPassengers(int passengers) {
  101.         this.passengers += passengers;
  102.     }
  103.  
  104.     public void removePassengers(int passengers){
  105.         this.passengers -= passengers;
  106.     }
  107.  
  108.     public void setPassengers(int passengers) {
  109.             this.passengers = passengers;
  110.  
  111.     }
  112. }
Add Comment
Please, Sign In to add comment