Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Exam16April;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayDeque;
- import java.util.Arrays;
- public class TrojanInvasion {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- int numberWaves = Integer.parseInt(reader.readLine());
- int[] plates = Arrays.stream(reader.readLine().split(" "))
- .mapToInt(Integer::parseInt).toArray();
- ArrayDeque<Integer> platesQueue = new ArrayDeque<>();
- for (int plate : plates) {
- platesQueue.offer(plate);
- }
- // platesQueue.poll();
- // взима първия по ред на четене 10 20 30 -> 10 -> index 0 все едно
- for (int i = 1; i <= numberWaves; i++) {
- int[] warriors = Arrays.stream(reader.readLine().split(" "))
- .mapToInt(Integer::parseInt).toArray();
- ArrayDeque<Integer> warriorsQueue = new ArrayDeque<>();
- for (int warrior : warriors) {
- warriorsQueue.offer(warrior);
- }
- // 4 5 1 влизат като 4 5 1
- // warriorsStack.pollLast();
- // попва на последна позиция -> В случая 1 -> точно, което ни трябва
- if (i % 3 == 0) {
- int newPlate = Integer.parseInt(reader.readLine());
- platesQueue.addLast(newPlate);
- }
- while (warriorsQueue.size() > 0 && platesQueue.size() > 0) {
- int lastWarrior = warriorsQueue.peekLast();
- int firstPlate = platesQueue.peekFirst();
- if (lastWarrior > firstPlate) {
- // while (lastWarrior > 0) {
- if (platesQueue.size() <= 0) {
- noMorePlatesLeft(warriorsQueue);
- return;
- }
- platesQueue.removeFirst();
- warriorsQueue.removeLast();
- warriorsQueue.offer(lastWarrior - firstPlate);
- lastWarrior -= firstPlate;
- // }
- } else if (firstPlate > lastWarrior) {
- warriorsQueue.removeLast();
- platesQueue.removeFirst();
- platesQueue.offerFirst(firstPlate - lastWarrior);
- } else {
- warriorsQueue.removeLast();
- platesQueue.removeFirst();
- }
- if (platesQueue.size() <= 0) {
- noMorePlatesLeft(warriorsQueue);
- return;
- }
- }
- }
- if (platesQueue.size() > 0) {
- System.out.println("The Spartans successfully repulsed the Trojan attack.");
- System.out.print("Plates left: ");
- while (platesQueue.size() > 0) {
- if (platesQueue.size() == 1) {
- System.out.print(platesQueue.poll());
- } else {
- System.out.print(platesQueue.poll() + ", ");
- }
- }
- }
- }
- private static void noMorePlatesLeft(ArrayDeque<Integer> warriorsQueue) {
- System.out.println("The Trojans successfully destroyed the Spartan defense.");
- System.out.print("Warriors left: ");
- while (warriorsQueue.size() > 0) {
- if (warriorsQueue.size() == 1) {
- System.out.print(warriorsQueue.pollLast());
- } else {
- System.out.print(warriorsQueue.pollLast() + ", ");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement