Advertisement
beinsaduno

E03NeedForSpeedIII

Mar 28th, 2021
655
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.39 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.nio.charset.StandardCharsets;
  5. import java.util.Map;
  6. import java.util.TreeMap;
  7.  
  8.  
  9. public class Demo {
  10.     public static void main(String[] args) throws IOException {
  11.         BufferedReader reader = new BufferedReader(
  12.                 new InputStreamReader(System.in, StandardCharsets.UTF_8));
  13.  
  14.         int number = Integer.parseInt(reader.readLine());
  15.  
  16.         Map<String, Integer[]> map = new TreeMap<>();
  17.  
  18.         for (int i = 0; i < number; i++) {
  19.             String[] split = reader.readLine().trim().split("\\|");
  20.             String car = split[0];
  21.             int mileage = Integer.parseInt(split[1]);
  22.             int fuel = Integer.parseInt(split[2]);
  23.  
  24.             map.putIfAbsent(car, new Integer[2]);
  25.             map.get(car)[0] = mileage;
  26.             map.get(car)[1] = fuel;
  27.         }
  28.         String command = reader.readLine();
  29.  
  30.         while (!"Stop".equals(command)) {
  31.             String[] commandParts = command.trim().split(" : ");
  32.             String keyCommand = commandParts[0];
  33.             String keyCar = commandParts[1];
  34.  
  35.             switch (keyCommand) {
  36.                 case "Drive":
  37.                     int distance = Integer.parseInt(commandParts[2]);
  38.                     int fuel = Integer.parseInt(commandParts[3]);
  39.  
  40.                     if (map.get(keyCar)[1] < fuel) {
  41.                         System.out.println("Not enough fuel to make that ride");
  42.                     } else {
  43.                         map.get(keyCar)[0] += distance;
  44.                         map.get(keyCar)[1] -= fuel;
  45.                         System.out.printf("%s driven for %d kilometers. %d liters of fuel consumed.%n", keyCar, distance, fuel);
  46.                         if (100000 < map.get(keyCar)[0]) {
  47.                             map.remove(keyCar);
  48.                             System.out.printf("Time to sell the %s!%n", keyCar);
  49.                         }
  50.                     }
  51.                     break;
  52.                 case "Refuel":
  53.                     int fuelRefuel = Integer.parseInt(commandParts[2]);
  54.  
  55.                     if (75 < fuelRefuel + map.get(keyCar)[1]) {
  56.                         fuelRefuel = 75 - map.get(keyCar)[1];
  57.                         map.get(keyCar)[1] = 75;
  58.                     } else {
  59.                         map.get(keyCar)[1] += fuelRefuel;
  60.                     }
  61.                     System.out.printf("%s refueled with %d liters%n", keyCar, fuelRefuel);
  62.                     break;
  63.                 case "Revert":
  64.                     int km = Integer.parseInt(commandParts[2]);
  65.  
  66.                     if (10000 <= map.get(keyCar)[0] - km) {
  67.                         map.get(keyCar)[0] -= km;
  68.                         System.out.printf("%s mileage decreased by %d kilometers", keyCar, km);
  69.                     } else {
  70.                         map.get(keyCar)[0] = 10000;
  71.                     }
  72.                     break;
  73.                 default:
  74.                     break;
  75.             }
  76.  
  77.             command = reader.readLine();
  78.         }
  79.         map
  80.                 .entrySet()
  81.                 .stream()
  82.                 .sorted((a, b) -> Integer.compare(b.getValue()[0], a.getValue()[0]))
  83.                 .forEach(entry -> System.out.printf("%s -> Mileage: %d kms, Fuel in the tank: %d lt.%n", entry.getKey(), entry.getValue()[0], entry.getValue()[1]));
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement