import java.util.ArrayList; import java.util.PriorityQueue; import java.util.Scanner; public class Oobleck_John { public static final int MAXC = 100; public static Circle[] circles = new Circle[2*MAXC]; public static void main(String[] args) { PriorityQueue q = new PriorityQueue<>(); Scanner in = new Scanner(System.in); int n; n = in.nextInt(); for(int i=0; i c2.rate ? c1.rate : c2.rate; Circle newCircle = new Circle(x, y, r, rate, t); ArrayList list = new ArrayList<>(); // check for continued ooblection do { list.clear(); for(int i=0; i 0) { double area = newCircle.r*newCircle.r; double xsum = newCircle.xc; double ysum = newCircle.yc; for(int i : list) { double newr = circles[i].getRadius(t); area += newr*newr; xsum += circles[i].xc; ysum += circles[i].yc; if (circles[i].rate > rate) rate = circles[i].rate; circles[i].active = false; } newCircle.r = Math.sqrt(area); newCircle.xc = xsum/(list.size()+1); newCircle.yc = ysum/(list.size()+1); newCircle.rate = rate; //System.out.println(" Merge with " + (list.size()+1) + " circles, resulting in radius, location = " + newCircle.r + " " + newCircle.xc + "," + newCircle.yc); } } while (list.size() > 0); circles[n++] = newCircle; //System.out.println(" Adding new circle " + (n-1)); for(int j=0; j { public double t; public int i1, i2; public PElement(double t, int i1, int i2) { this.t = t; this.i1 = i1; this.i2 = i2; } public int compareTo(PElement pe) { return t > pe.t ? 1 : -1; } }