Advertisement
_ums_

subway

Mar 13th, 2023
994
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.nio.file.Files;
  3. import java.nio.file.Path;
  4. import java.util.*;
  5.  
  6. public class SubwayDelivery {
  7.     public static void main(String[] args) throws IOException {
  8.         List<String> lines = Files.readAllLines(Path.of("input.txt"));
  9.         Deque<List<String>> orders = new ArrayDeque<>();
  10.         Map<String, Long> train = new HashMap<>();
  11.  
  12.         Integer quantity = Integer.parseInt(lines.get(0));
  13.         for (Integer i = 1; i <= quantity; i++) {
  14.             List<String> line = List.of(lines.get(i).split(" "));
  15.  
  16.             if (line.get(0).equals("add")) {
  17.  
  18.                 List<String> order = new ArrayList<>();
  19.  
  20.                 order.add(line.get(2));
  21.                 order.add(line.get(1));
  22.  
  23.                 orders.push(order);
  24.  
  25.                 Long count = Long.parseLong(line.get(1));
  26.                 String item = line.get(2);
  27.  
  28.                 if (!train.containsKey(line.get(2))) {
  29.                     train.put(item, count);
  30.                 } else {
  31.                     train.put(item, train.get(item) + count);
  32.                 }
  33.  
  34.             }
  35.  
  36.             if (line.get(0).equals("delete")) {
  37.                 Long delete = Long.parseLong(line.get(1));
  38.                 do {
  39.                     if (Integer.parseInt(orders.getFirst().get(1)) <= delete) {
  40.  
  41.                         train.put(orders.getFirst().get(0), train.get(orders.getFirst().get(0)) - Integer.parseInt(orders.getFirst().get(1)));
  42.                         delete = delete - Integer.parseInt(orders.getFirst().get(1));
  43.                         orders.pop();
  44.  
  45.                     } else {
  46.  
  47.                         List<String> last = orders.getFirst();
  48.                         last.set(1, String.valueOf(Integer.parseInt(last.get(1)) - delete));
  49.                         train.put(last.get(0), train.get(last.get(0)) - delete);
  50.                         orders.pop();
  51.                         orders.push(last);
  52.                         delete = 0L;
  53.                     }
  54.                 } while (delete != 0);
  55.             }
  56.  
  57.             if (line.get(0).equals("get")) {
  58.                 if (train.containsKey(line.get(1))) {
  59.                     System.out.println(train.get(line.get(1)));
  60.                 } else {
  61.                     System.out.println(0);
  62.                 }
  63.             }
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement