Advertisement
emodev

Untitled

Apr 16th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.77 KB | None | 0 0
  1. package Exam16April;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.ArrayDeque;
  7. import java.util.Arrays;
  8.  
  9. public class TrojanInvasion {
  10.     public static void main(String[] args) throws IOException {
  11.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  12.  
  13.         int numberWaves = Integer.parseInt(reader.readLine());
  14.  
  15.         int[] plates = Arrays.stream(reader.readLine().split(" "))
  16.                 .mapToInt(Integer::parseInt).toArray();
  17.  
  18.         ArrayDeque<Integer> platesQueue = new ArrayDeque<>();
  19.  
  20.         for (int plate : plates) {
  21.             platesQueue.offer(plate);
  22.         }
  23.  
  24. //        platesQueue.poll();
  25. //        взима първия по ред на четене 10 20 30 -> 10 -> index 0 все едно
  26.  
  27.         for (int i = 1; i <= numberWaves; i++) {
  28.             int[] warriors = Arrays.stream(reader.readLine().split(" "))
  29.                     .mapToInt(Integer::parseInt).toArray();
  30.  
  31.             ArrayDeque<Integer> warriorsQueue = new ArrayDeque<>();
  32.  
  33.             for (int warrior : warriors) {
  34.                 warriorsQueue.offer(warrior);
  35.             }
  36. //            4 5 1 влизат като 4 5 1
  37.  
  38. //            warriorsStack.pollLast();
  39. //            попва на последна позиция -> В случая 1 -> точно, което ни трябва
  40.             if (i % 3 == 0) {
  41.                 int newPlate = Integer.parseInt(reader.readLine());
  42.                 platesQueue.addLast(newPlate);
  43.             }
  44.  
  45.             while (warriorsQueue.size() > 0 && platesQueue.size() > 0) {
  46.  
  47.                 int lastWarrior = warriorsQueue.peekLast();
  48.                 int firstPlate = platesQueue.peekFirst();
  49.  
  50.                 if (lastWarrior > firstPlate) {
  51. //                    while (lastWarrior > 0) {
  52.                         if (platesQueue.size() <= 0) {
  53.                             noMorePlatesLeft(warriorsQueue);
  54.                             return;
  55.                         }
  56.                         platesQueue.removeFirst();
  57.                         warriorsQueue.removeLast();
  58.                         warriorsQueue.offer(lastWarrior - firstPlate);
  59.                         lastWarrior -= firstPlate;
  60. //                    }
  61.                 } else if (firstPlate > lastWarrior) {
  62.                     warriorsQueue.removeLast();
  63.                     platesQueue.removeFirst();
  64.                     platesQueue.offerFirst(firstPlate - lastWarrior);
  65.                 } else {
  66.                     warriorsQueue.removeLast();
  67.                     platesQueue.removeFirst();
  68.                 }
  69.  
  70.                 if (platesQueue.size() <= 0) {
  71.                     noMorePlatesLeft(warriorsQueue);
  72.                     return;
  73.                 }
  74.             }
  75.  
  76.  
  77.  
  78.  
  79.         }
  80.  
  81.         if (platesQueue.size() > 0) {
  82.             System.out.println("The Spartans successfully repulsed the Trojan attack.");
  83.             System.out.print("Plates left: ");
  84.             while (platesQueue.size() > 0) {
  85.                 if (platesQueue.size() == 1) {
  86.                     System.out.print(platesQueue.poll());
  87.                 } else {
  88.                     System.out.print(platesQueue.poll() + ", ");
  89.                 }
  90.             }
  91.         }
  92.  
  93.  
  94.     }
  95.  
  96.  
  97.     private static void noMorePlatesLeft(ArrayDeque<Integer> warriorsQueue) {
  98.         System.out.println("The Trojans successfully destroyed the Spartan defense.");
  99.         System.out.print("Warriors left: ");
  100.         while (warriorsQueue.size() > 0) {
  101.             if (warriorsQueue.size() == 1) {
  102.                 System.out.print(warriorsQueue.pollLast());
  103.             } else {
  104.                 System.out.print(warriorsQueue.pollLast() + ", ");
  105.             }
  106.         }
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement