Advertisement
desislava_topuzakova

Untitled

Jun 7th, 2023
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class RubberDuckDebuggers_01 {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6. //времена на програмисти
  7. String[] inputProgrammers = scanner.nextLine().split("\\s+");
  8. //брой на задачите
  9. String[] inputTasks = scanner.nextLine().split("\\s+");
  10.  
  11. //вид патка -> бройки
  12. Map<String, Integer> ducksMap = new LinkedHashMap<>();
  13. ducksMap.put("Darth Vader Ducky", 0);
  14. ducksMap.put("Thor Ducky", 0);
  15. ducksMap.put("Big Blue Rubber Ducky", 0);
  16. ducksMap.put("Small Yellow Rubber Ducky", 0);
  17.  
  18. ArrayDeque<Integer> programmers = new ArrayDeque<>(); //опашка
  19. Arrays.stream(inputProgrammers).mapToInt(Integer::parseInt).forEach(programmers::offer);
  20.  
  21. Stack<Integer> tasks = new Stack<>(); //стек
  22. Arrays.stream(inputTasks).mapToInt(Integer::parseInt).forEach(tasks::push);
  23.  
  24.  
  25. //повтаряме: взимаме първия на опашката и последния в стека
  26. //спираме: ако свършат елементите в някоя от структурите
  27. //продължаваме: имаме елементи и в двете структури
  28. while (!programmers.isEmpty() && !tasks.isEmpty()) {
  29. int programmer = programmers.peek(); //първия елемент на опашката
  30. int task = tasks.peek(); //последния елемент в стека
  31. int needTime = programmer * task;
  32.  
  33. //проверка каква патка купуваме спрямо нужното време
  34. if (needTime >= 0 && needTime <= 60) {
  35. //купуваме Darth Vader Ducky
  36. ducksMap.put("Darth Vader Ducky", ducksMap.get("Darth Vader Ducky") + 1);
  37. programmers.poll(); //премахва първия елемент от опашката
  38. tasks.pop(); //премахва последния елемент от стека
  39. } else if (needTime >= 61 && needTime <= 120) {
  40. //купуваме Thor Ducky
  41. ducksMap.put("Thor Ducky", ducksMap.get("Thor Ducky") + 1);
  42. programmers.poll(); //премахва първия елемент от опашката
  43. tasks.pop(); //премахва последния елемент от стека
  44. } else if (needTime >= 121 && needTime <= 180) {
  45. //купуваме Big Blue Rubber Ducky
  46. ducksMap.put("Big Blue Rubber Ducky", ducksMap.get("Big Blue Rubber Ducky") + 1);
  47. programmers.poll(); //премахва първия елемент от опашката
  48. tasks.pop(); //премахва последния елемент от стека
  49. } else if (needTime >= 181 && needTime <= 240) {
  50. //купуваме Small Yellow Rubber Ducky
  51. ducksMap.put("Small Yellow Rubber Ducky", ducksMap.get("Small Yellow Rubber Ducky") + 1);
  52. programmers.poll(); //премахва първия елемент от опашката
  53. tasks.pop(); //премахва последния елемент от стека
  54. } else {
  55. //needTime > 240
  56. programmers.offerLast(programmers.poll());
  57. tasks.push(tasks.pop() - 2);
  58. }
  59.  
  60. }
  61.  
  62. System.out.println("Congratulations, all tasks have been completed! Rubber ducks rewarded:");
  63. for(Map.Entry<String, Integer> duckEntry : ducksMap.entrySet()) {
  64. //duckEntry
  65. //key: вид на патката
  66. //value: брой на патките от този вид
  67. System.out.println(duckEntry.getKey() + ": " + duckEntry.getValue());
  68. }
  69.  
  70.  
  71. }
  72. }
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement