Advertisement
EfeDaniel

GCJ C EfeDaniel

Apr 4th, 2020
658
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.18 KB | None | 0 0
  1. package Competitions.CodeJam2020;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Comparator;
  5. import java.util.Scanner;
  6.  
  7. public class ParentingPartneringReturns {
  8.  
  9.     public static void main(String[] args) {
  10.         Scanner input = new Scanner(System.in);
  11.         int T = input.nextInt();
  12.         for (int ks = 1; ks <= T; ks++) {
  13.             int n = input.nextInt();
  14.             Pair[] pairs = new Pair[n];
  15.             for (int i = 0; i < n; i++) {
  16.                 pairs[i] = new Pair(i, input.nextInt(), input.nextInt());
  17.             }
  18.             System.out.println(String.format("Case #%d: %s", ks, solve(n, pairs)));
  19.         }
  20.     }
  21.  
  22.     private static String solve(int n, Pair[] pairs) {
  23.         StringBuilder answer = new StringBuilder();
  24.         Pair.sortByValues(pairs);
  25.         int c = -1, j = -1;
  26.         for (int i = 0; i < n; i++) {
  27.             Pair pair = pairs[i];
  28.             c = endTask(c, pair);
  29.             j = endTask(j, pair);
  30.  
  31.             if (c < 0) {
  32.                 //Assign Task to C
  33.                 c = pair.y;
  34.                 pair.assign = "C";
  35.             } else if (j < 0) {
  36.                 //Assign Task to J
  37.                 j = pair.y;
  38.                 pair.assign = "J";
  39.             } else {
  40.                 return "IMPOSSIBLE";
  41.             }
  42.         }
  43.         Pair.sortWithID(pairs);
  44.         for (int i = 0; i < n; i++) answer.append(pairs[i].assign);
  45.         return answer.toString();
  46.     }
  47.  
  48.     private static int endTask(int person, Pair task) {
  49.         if (person <= task.x) return -1; else return person;
  50.     }
  51.  
  52. }
  53.  
  54. class Pair {
  55.  
  56.     int id;
  57.     int x;
  58.     int y;
  59.     String assign;
  60.     Pair (int id, int x, int y) { this.id = id; this.x = x; this.y = y; }
  61.  
  62.     @Override
  63.     public String toString() {
  64.         return "[" + id + ": " + x + ", " + y + "]";
  65.     }
  66.  
  67.     static void sortByValues(Pair[] pairs) {
  68.         Arrays.sort(pairs, (o1, o2) -> {
  69.             if (o1.x != o2.x) {
  70.                 return o1.x - o2.x;
  71.             } else {
  72.                 return o1.y - o2.y;
  73.             }
  74.         });
  75.     }
  76.  
  77.     static void sortWithID(Pair[] pairs) {
  78.         Arrays.sort(pairs, Comparator.comparingInt(o -> o.id));
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement