Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package REALEXAM;
- import java.util.ArrayDeque;
- import java.util.Arrays;
- import java.util.Deque;
- import java.util.Scanner;
- import java.util.stream.Collectors;
- public class OffroadChallenge {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- //initialFuel ->last -> stack
- Deque<Integer> initialFuelStack = new ArrayDeque<>();
- Arrays.stream(scanner.nextLine().split("\\s+"))
- .map(Integer::parseInt).forEach(initialFuelStack::push);
- //additionalConsumption -> first
- Deque<Integer> additionalConsumptionQueue = Arrays.stream(scanner.nextLine().split("\\s+"))
- .map(Integer::parseInt).collect(Collectors.toCollection(ArrayDeque::new));
- //amountOfFuelNeeded -> firstElement
- Deque<Integer> amountOfFuelNeededQueue = Arrays.stream(scanner.nextLine().split("\\s+"))
- .map(Integer::parseInt).collect(Collectors.toCollection(ArrayDeque::new));
- int lastStack = 0;
- int firstQueue = 0;
- int resultQueue = 0;
- if (!initialFuelStack.isEmpty()) {
- lastStack = initialFuelStack.peek();
- }
- if (!additionalConsumptionQueue.isEmpty()) {
- firstQueue = additionalConsumptionQueue.peek();
- }
- if (!amountOfFuelNeededQueue.isEmpty()) {
- resultQueue = amountOfFuelNeededQueue.peek();
- }
- int subtraction = lastStack - firstQueue;
- int numberOfAltitude = amountOfFuelNeededQueue.size();
- int altitude = 0;
- while (subtraction >= resultQueue
- && !initialFuelStack.isEmpty() && !additionalConsumptionQueue.isEmpty()
- && !amountOfFuelNeededQueue.isEmpty()) {
- initialFuelStack.pop();
- additionalConsumptionQueue.poll();
- amountOfFuelNeededQueue.poll();
- altitude += 1;
- System.out.printf("John has reached: Altitude %d%n", altitude);
- if (!initialFuelStack.isEmpty() && !additionalConsumptionQueue.isEmpty()
- && !amountOfFuelNeededQueue.isEmpty()) {
- lastStack = initialFuelStack.peek();
- firstQueue = additionalConsumptionQueue.peek();
- resultQueue = amountOfFuelNeededQueue.peek();
- subtraction = lastStack - firstQueue;
- }
- }
- if (numberOfAltitude > altitude) {
- System.out.printf("John did not reach: Altitude %d%n", altitude + 1);
- }
- if (numberOfAltitude == altitude) {
- System.out.println("John has reached all the altitudes and managed to reach the top!");
- } else if (numberOfAltitude > altitude && altitude > 0) {
- System.out.printf("John failed to reach the top.%n");
- System.out.print("Reached altitudes: ");
- for (int i = 1; i <= altitude; i++) {
- if (i < altitude) {
- System.out.printf("Altitude %d, ", i);
- } else {
- System.out.printf("Altitude %d", i);
- }
- }
- } else {
- System.out.println("John failed to reach the top. John didnt't reach any altitude");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment