Advertisement
Guest User

Untitled

a guest
May 25th, 2021
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.92 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.*;
  4.  
  5. public class Main {
  6.  
  7.     public static void main(String[] args) {
  8.  
  9.         Scanner scan = new Scanner(System.in);
  10.  
  11.         ArrayDeque<String> queue = new ArrayDeque<>();
  12.  
  13.         String[] data = scan.nextLine().split(";");
  14.  
  15.         Map<String, Integer> robots = new LinkedHashMap<>(); //има константни имена и секунди на робота
  16.         Map<String, Boolean> freeRobots = new HashMap<>(); //показва вярно ако не е зает и грешно ако е зает
  17.         Map<String, Integer> cooldown = new HashMap<>(); //даден е инт, който се намаля всеки път с 1
  18.  
  19.         String[] robotData = new String[2];
  20.         for (int i = 0; i < data.length; i++) { //давам стойности на всичко
  21.             robotData[0] = data[i].split("-")[0];
  22.             robotData[1] = data[i].split("-")[1];
  23.             robots.put(robotData[0], Integer.parseInt(robotData[1]));
  24.             freeRobots.put(robotData[0], true);
  25.             cooldown.put(robotData[0], 0);
  26.         }
  27.  
  28.         String[] time = scan.nextLine().split(":");
  29.         int hours = Integer.parseInt(time[0]);
  30.         int minutes = Integer.parseInt(time[1]);
  31.         int seconds = Integer.parseInt(time[2]);
  32.  
  33.         String material = scan.nextLine();
  34.  
  35.         while (!material.equals("End")) { //въвеждам продукти
  36.             queue.offer(material);
  37.             material = scan.nextLine();
  38.         }
  39.  
  40.         while (queue.size() > 0) {
  41.             seconds++;
  42.             if (seconds == 60) {
  43.                 seconds = 0;
  44.                 minutes++;
  45.                 if (minutes == 60) {
  46.                     hours++;
  47.                     minutes = 0;
  48.                     if (hours == 24){
  49.                         hours = 0;
  50.                     }
  51.                 }
  52.             }
  53.  
  54.             for (Map.Entry<String, Integer> entry : robots.entrySet()) { //проверява заетите роботи и им намаля
  55.                 //времето с 1, като костантата от robots не е променена
  56.                 if (freeRobots.get(entry.getKey()) == false) {
  57.                     cooldown.put(entry.getKey(), cooldown.get(entry.getKey()) - 1);
  58.                     if (cooldown.get(entry.getKey()) == 0) { //ако времето е 0 го правя свободен
  59.                         freeRobots.put(entry.getKey(), true);
  60.                     }
  61.                 }
  62.             }
  63.  
  64.             boolean anyone = false; //проверява дали има робот, който е взел продукт
  65.  
  66.             for (Map.Entry<String, Integer> entry : robots.entrySet()) { //дава на незаетите роботи задача
  67.                 if (freeRobots.get(entry.getKey()) == true) {
  68.                     freeRobots.put(entry.getKey(), false);
  69.                     cooldown.put(entry.getKey(), entry.getValue());
  70.                     System.out.print(entry.getKey() + " - " + queue.poll() + " ["); //извеждане и махане на най-горния
  71.                     //елемент от опашката
  72.                     if (hours < 10) {
  73.                         System.out.print("0");
  74.                     }
  75.                     System.out.print(hours + ":");
  76.                     if (minutes < 10) {
  77.                         System.out.print("0");
  78.                     }
  79.                     System.out.print(minutes + ":");
  80.                     if (seconds < 10) {
  81.                         System.out.print("0");
  82.                     }
  83.                     System.out.println(seconds + "]");
  84.                     anyone = true;
  85.                     break;
  86.                 }
  87.             }
  88.  
  89.             if (anyone == false) { //ако няма, мести продукта най-отзаде
  90.                 queue.offer(queue.poll());
  91.             }
  92.         }
  93.     }
  94. }
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement