plamenavylcheva

Offroad

Oct 21st, 2023
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. package REALEXAM;
  2.  
  3. import java.util.ArrayDeque;
  4. import java.util.Arrays;
  5. import java.util.Deque;
  6. import java.util.Scanner;
  7. import java.util.stream.Collectors;
  8.  
  9. public class OffroadChallenge {
  10. public static void main(String[] args) {
  11. Scanner scanner = new Scanner(System.in);
  12. //initialFuel ->last -> stack
  13. Deque<Integer> initialFuelStack = new ArrayDeque<>();
  14. Arrays.stream(scanner.nextLine().split("\\s+"))
  15. .map(Integer::parseInt).forEach(initialFuelStack::push);
  16.  
  17. //additionalConsumption -> first
  18. Deque<Integer> additionalConsumptionQueue = Arrays.stream(scanner.nextLine().split("\\s+"))
  19. .map(Integer::parseInt).collect(Collectors.toCollection(ArrayDeque::new));
  20. //amountOfFuelNeeded -> firstElement
  21. Deque<Integer> amountOfFuelNeededQueue = Arrays.stream(scanner.nextLine().split("\\s+"))
  22. .map(Integer::parseInt).collect(Collectors.toCollection(ArrayDeque::new));
  23. int lastStack = 0;
  24. int firstQueue = 0;
  25. int resultQueue = 0;
  26. if (!initialFuelStack.isEmpty()) {
  27. lastStack = initialFuelStack.peek();
  28. }
  29. if (!additionalConsumptionQueue.isEmpty()) {
  30. firstQueue = additionalConsumptionQueue.peek();
  31. }
  32. if (!amountOfFuelNeededQueue.isEmpty()) {
  33. resultQueue = amountOfFuelNeededQueue.peek();
  34. }
  35. int subtraction = lastStack - firstQueue;
  36. int numberOfAltitude = amountOfFuelNeededQueue.size();
  37. int altitude = 0;
  38. while (subtraction >= resultQueue
  39. && !initialFuelStack.isEmpty() && !additionalConsumptionQueue.isEmpty()
  40. && !amountOfFuelNeededQueue.isEmpty()) {
  41. initialFuelStack.pop();
  42. additionalConsumptionQueue.poll();
  43. amountOfFuelNeededQueue.poll();
  44. altitude += 1;
  45. System.out.printf("John has reached: Altitude %d%n", altitude);
  46. if (!initialFuelStack.isEmpty() && !additionalConsumptionQueue.isEmpty()
  47. && !amountOfFuelNeededQueue.isEmpty()) {
  48. lastStack = initialFuelStack.peek();
  49. firstQueue = additionalConsumptionQueue.peek();
  50. resultQueue = amountOfFuelNeededQueue.peek();
  51. subtraction = lastStack - firstQueue;
  52. }
  53. }
  54. if (numberOfAltitude > altitude) {
  55. System.out.printf("John did not reach: Altitude %d%n", altitude + 1);
  56. }
  57. if (numberOfAltitude == altitude) {
  58. System.out.println("John has reached all the altitudes and managed to reach the top!");
  59. } else if (numberOfAltitude > altitude && altitude > 0) {
  60. System.out.printf("John failed to reach the top.%n");
  61. System.out.print("Reached altitudes: ");
  62. for (int i = 1; i <= altitude; i++) {
  63. if (i < altitude) {
  64. System.out.printf("Altitude %d, ", i);
  65. } else {
  66. System.out.printf("Altitude %d", i);
  67. }
  68. }
  69. } else {
  70. System.out.println("John failed to reach the top. John didnt't reach any altitude");
  71. }
  72. }
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment