Skip to content

Instantly share code, notes, and snippets.

@kocko
Last active December 21, 2017 11:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kocko/2320216afc3809ab7ca796b63090fe5e to your computer and use it in GitHub Desktop.
Save kocko/2320216afc3809ab7ca796b63090fe5e to your computer and use it in GitHub Desktop.
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
import static java.util.Comparator.reverseOrder;
public class Main implements Closeable {
private InputReader in = new InputReader(System.in);
private PrintWriter out = new PrintWriter(System.out);
public void solve() {
int t = in.ni();
while (t-- > 0) {
int battlefields = in.ni(), green = in.ni(), blue = in.ni();
PriorityQueue<Integer> greenArmy = new PriorityQueue<>(reverseOrder()), blueArmy = new PriorityQueue<>(reverseOrder());
for (int i = 0; i < green; i++) greenArmy.add(in.ni());
for (int i = 0; i < blue; i++) blueArmy.add(in.ni());
while ((green = greenArmy.size()) > 0 & (blue = blueArmy.size()) > 0) {
List<Integer> g = new ArrayList<>(), b = new ArrayList<>();
for (int i = 0; i < battlefields; i++) {
if (greenArmy.size() == 0 | blueArmy.size() == 0) break;
Integer x = greenArmy.poll(), y = blueArmy.poll();
if (x > y) g.add(x - y);
else if (y > x) b.add(y - x);
}
greenArmy.addAll(g);
blueArmy.addAll(b);
}
if (green == 0 && blue == 0) {
out.println("green and blue died");
} else if (blue > 0) {
out.println("blue wins");
for (int i = 0; i < blue; i++) {
out.println(blueArmy.poll());
}
} else {
out.println("green wins");
for (int i = 0; i < green; i++) {
out.println(greenArmy.poll());
}
}
if (t > 0) out.println();
}
}
@Override
public void close() throws IOException {
in.close();
out.close();
}
static class InputReader {
public BufferedReader reader;
public StringTokenizer tokenizer;
public InputReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream), 32768);
tokenizer = null;
}
public String next() {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
}
public int ni() {
return Integer.parseInt(next());
}
public long nl() {
return Long.parseLong(next());
}
public void close() throws IOException {
reader.close();
}
}
public static void main(String[] args) throws IOException {
try (Main instance = new Main()) {
instance.solve();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment