Advertisement
Rayk

Snowmen

Feb 28th, 2018
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.92 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.Console;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. import java.util.stream.Collectors;
  9.  
  10. public class Snowmen {
  11.     public static void main(String[] args) throws IOException {
  12.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  13.  
  14.         int[] seq = Arrays.stream(reader
  15.                 .readLine()
  16.                 .split(" "))
  17.                 .mapToInt(Integer::parseInt)
  18.                 .toArray();
  19.  
  20.         while (seq.length > 1) {
  21.             List<Integer> losers = new ArrayList<>();
  22.  
  23.             for (int attacker = 0; attacker < seq.length; attacker++) {
  24.                 int target = seq[attacker] % seq.length;
  25.                 int diff = Math.abs(attacker - target);
  26.  
  27.                 if (seq.length - losers.size() == 1)
  28.                     break;
  29.  
  30.                 if (losers.contains(attacker))
  31.                     continue;
  32.  
  33.                 if (attacker == target) {
  34.                     System.out.printf("%s performed harakiri%n", attacker);
  35.                     losers.add(attacker);
  36.                     seq[attacker] = -1;
  37.                 } else if (diff % 2 == 0) {
  38.                     System.out.printf("%s x %s -> %s wins%n", attacker, target, attacker);
  39.                     losers.add(target);
  40.                     seq[target] = -1;
  41.                 } else {
  42.                     System.out.printf("%s x %s -> %s wins%n", attacker, target, target);
  43.                     losers.add(attacker);
  44.                     seq[attacker] = -1;
  45.                 }
  46.  
  47.                 losers = losers.stream()
  48.                         .distinct()
  49.                         .collect(Collectors.toList());
  50.             }
  51.  
  52.             seq = Arrays.stream(seq)
  53.                     .filter(n -> n > -1)
  54.                     .toArray();
  55.         }
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement