public static Building[] placeBigFires(int num, Building[] b, Limits radius) { List remaining = new ArrayList(); for (int i = 0; i < b.length; ++i) remaining.add(b[i]); Collections.shuffle(remaining); Collection fires = new HashSet(); System.out.print("Placing " + num + " big fires"); Iterator it = remaining.iterator(); for (int i = 0; i < num; ++i) { Building center = (Building) it.next(); fires.add(center); long r = radius.getNumber(); long distanceSquared = r * r; // Check for close buildings for (int j = 0; j < b.length; ++j) { long dx = center.getX() - b[j].getX(); long dy = center.getY() - b[j].getY(); long distance = (dx * dx) + (dy * dy); if (distance <= distanceSquared) fires.add(b[j]); } } return (Building[]) fires.toArray(new Building[0]); }