Advertisement
IrinaIgnatova

Robotics - queue

Sep 30th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.86 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.time.LocalTime;
  7. import java.time.format.DateTimeFormatter;
  8. import java.util.*;
  9.  
  10. public class Main {
  11.  
  12.     public static void main(String[] args) throws IOException {
  13.         // Scanner scanner = new Scanner(System.in);
  14.         var reader = new BufferedReader(new InputStreamReader(System.in));
  15.  
  16.         String[] robotsWithTimes = reader.readLine().split(";");
  17.         Map<String, Integer> robots = new LinkedHashMap<>();
  18.  
  19.         int[] processTime = new int[robotsWithTimes.length];
  20.  
  21.         for (String robot : robotsWithTimes) {
  22.             String[] data = robot.split("-");
  23.  
  24.             robots.put(data[0], Integer.parseInt(data[1]));
  25.  
  26.         }
  27.  
  28.         String[] timeData = reader.readLine().split(":");// прочитаме си времето и си отделяме часове, минути и сек
  29.         int hours = Integer.parseInt(timeData[0]);
  30.         int minutes = Integer.parseInt(timeData[1]);
  31.         int seconds = Integer.parseInt(timeData[2]);
  32.  
  33.         int beginSeconds = hours * 360 + minutes * 60 + seconds;//правим началното време в секунди
  34.  
  35.         ArrayDeque<String> queue = new ArrayDeque<>();
  36.  
  37.         String line = reader.readLine();
  38.         while (!line.equals("End")) {
  39.             queue.offer(line);
  40.  
  41.             line = reader.readLine();
  42.         }
  43.  
  44.  
  45.         StringBuilder stringBuilder = new StringBuilder();
  46.         while (!queue.isEmpty()) {
  47.             beginSeconds++;
  48.             String product = queue.poll();
  49.  
  50.             for (int i = 0; i < processTime.length; i++) {
  51.                 if (processTime[i] > 0) {
  52.                     processTime[i]--;
  53.                 }
  54.  
  55.             }
  56.  
  57.             int i = 0;
  58.             boolean isTaken = false;
  59.             for (Map.Entry<String, Integer> robot : robots.entrySet()) {
  60.                 if (processTime[i] == 0) {
  61.                     processTime[i] = robot.getValue();
  62.                     stringBuilder.append(print(robot.getKey(), product, beginSeconds));
  63.                     stringBuilder.append(System.lineSeparator());
  64.                     isTaken = true;
  65.                     break;
  66.                 }
  67.                 i++;
  68.             }
  69.             if (!isTaken) {
  70.                 queue.offer(product);
  71.             }
  72.         }
  73.         System.out.println(stringBuilder.toString());
  74.     }
  75.  
  76.     private static String print(String robot, String product, long beginSeconds) {
  77.         long s = beginSeconds % 60;// тук обръщаме секундите в часове.минути  секунди
  78.         long m = (beginSeconds / 60) % 60;
  79.         long h = (beginSeconds / (60 * 60)) % 24;
  80.         return
  81.                 String.format("%s - %s [%02d:%02d:%02d]%n", robot, product, h, m, s);
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement