Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.*;
- import java.util.List;
- public class RoboticsClass {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String[] robotsToken = reader.readLine().split(";");
- List<Robot> robots = new ArrayList<>();
- for (int i = 0; i < robotsToken.length; i++) {
- String[] robotToken = robotsToken[i].split("-");
- Robot robot = new Robot(robotToken[0], Integer.parseInt(robotToken[1]));
- robots.add(robot);
- }
- String[] time = reader.readLine().split(":");
- long hour = Integer.parseInt(time[0]) * 3600;
- long minute = Integer.parseInt(time[1]) * 60;
- long seconds = Integer.parseInt(time[2]);
- long allSeconds = hour + minute + seconds;
- Deque<String> products = new ArrayDeque<>();
- while (true) {
- String product = reader.readLine();
- if (product.equals("End")) {
- break;
- }
- products.offer(product);
- }
- while (!products.isEmpty()) {
- allSeconds++;
- for (int i = 0; i < robots.size(); i++) {
- Robot robot = robots.get(i);
- if (robot.getRobotsCounter() > 0){
- robot.manipulateCounter();
- }
- }
- String currentProduct = products.poll();
- boolean isTaken = false;
- for (int i = 0; i < robots.size(); i++) {
- Robot robot = robots.get(i);
- if (robot.getRobotsCounter() == 0){
- robot.setRobotsCounter(robot.getProcessTime());
- isTaken = true;
- System.out.printf("%s - %s [%s]%n",robot.getName()
- ,currentProduct,robot.convertSeconds(allSeconds));
- break;
- }
- }
- if (!isTaken){
- products.offer(currentProduct);
- }
- }
- }
- }
- class Robot {
- private String name;
- private int processTime;
- private int robotsCounter;
- public Robot(String name, int processTime) {
- this.name = name;
- this.processTime = processTime;
- }
- public int getRobotsCounter() {
- return robotsCounter;
- }
- public void setRobotsCounter(int robotsCounter) {
- this.robotsCounter = robotsCounter;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getProcessTime() {
- return processTime;
- }
- public void setProcessTime(int processTime) {
- this.processTime = processTime;
- }
- public void manipulateCounter(){
- this.robotsCounter--;
- }
- public String convertSeconds(long sec) {
- long seconds = sec % 60;
- long minutes = (sec / 60) % 60;
- long hours = (sec / 3600) % 24;
- return String.format("%02d:%02d:%02d", hours, minutes, seconds);
- }
- }
Add Comment
Please, Sign In to add comment