Advertisement
CR7CR7

NFS3

Nov 28th, 2022
829
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.42 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class P03NeedForSpeedIII {
  4.     public static void main(String[] args) {
  5.         Scanner scanner = new Scanner(System.in);
  6.  
  7.         int n = Integer.parseInt(scanner.nextLine());
  8.  
  9.         Map<String, List<Integer>> carsMap = new LinkedHashMap<>();
  10.         for (int i = 0; i < n; i++) {
  11.             String[] carsToken = scanner.nextLine().split("\\|");
  12.             String car = carsToken[0];
  13.             int mileage = Integer.parseInt(carsToken[1]);
  14.             int fuel = Integer.parseInt(carsToken[2]);
  15.  
  16.             carsMap.putIfAbsent(car, new ArrayList<>());
  17.  
  18.             carsMap.get(car).add(0, mileage);
  19.             carsMap.get(car).add(1, fuel);
  20.  
  21.         }
  22.         String inputLine = scanner.nextLine();
  23.         while (!inputLine.equals("Stop")) {
  24.             String[] tokens = inputLine.split(" : ");
  25.             String command = tokens[0];
  26.             String car = tokens[1];
  27.  
  28.             int mileage = carsMap.get(car).get(0);
  29.             int fuel = carsMap.get(car).get(1);
  30.             switch (command) {
  31.                 case "Drive":
  32.                     int distance = Integer.parseInt(tokens[2]);
  33.                     int consumedFuel = Integer.parseInt(tokens[3]);
  34.  
  35.                     if (fuel >= consumedFuel) {
  36.                         carsMap.get(car).set(0, mileage + distance);
  37.                         carsMap.get(car).set(1, fuel - consumedFuel);
  38.                         System.out.printf("%s driven for %d kilometers. %d liters of fuel consumed.%n", car, distance, consumedFuel);
  39.                     } else {
  40.                         System.out.println("Not enough fuel to make that ride");
  41.                     }
  42.  
  43.                     if (mileage + distance >= 100000) {
  44.                         System.out.printf("Time to sell the %s!%n", car);
  45.                         carsMap.remove(car);
  46.                     }
  47.  
  48.                     break;
  49.                 case "Refuel":
  50.                     int refillFuel = Integer.parseInt(tokens[2]);
  51.  
  52.                     int totalFuel = fuel + + refillFuel;
  53.                     int diff = 0;
  54.                     if (totalFuel > 75) {
  55.                         diff = 75 - fuel;
  56.                         totalFuel = 75;
  57.                     } else {
  58.                         diff = refillFuel;
  59.                     }
  60.                     carsMap.get(car).set(1, totalFuel);
  61.                     System.out.printf("%s refueled with %d liters%n", car, diff);
  62.  
  63.                     break;
  64.                 case "Revert":
  65.                     int kilometers = Integer.parseInt(tokens[2]);
  66.                     int totalMileage = mileage - kilometers;
  67.  
  68.                     if (totalMileage < 10000) {
  69.                         totalMileage = 10000;
  70.                     } else {
  71.                         System.out.printf("%s mileage decreased by %d kilometers%n", car, kilometers);
  72.                     }
  73.  
  74.                     carsMap.get(car).set(0, totalMileage);
  75.  
  76.                     break;
  77.             }
  78.  
  79.  
  80.             inputLine = scanner.nextLine();
  81.         }
  82.  
  83.         carsMap.forEach((key, value) ->
  84.                 System.out.printf("%s -> Mileage: %d kms, Fuel in the tank: %d lt.%n",
  85.                         key, value.get(0), value.get(1)));
  86.                    
  87.                    
  88.                    
  89.                    
  90.                    
  91.                    
  92.                    
  93.                    
  94.  
  95.  
  96.  
  97.             }
  98.         }
  99.  
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement