public double area(String[] circles) {
		Circle[] cir = new Circle[circles.length];
		for (int i = 0; i < cir.length; i++) {
			String[] split = circles[i].split(" ");
			cir[i] = new Circle(Integer.valueOf(split[0]), Integer.valueOf(split[1]), Integer.valueOf(split[2]));
		}
		// 半径が小さい順にソート
		Arrays.sort(cir, new Comparator<Circle>() {
			public int compare(Circle o1, Circle o2) {
				return Integer.valueOf(o2.R).compareTo(o1.R);
			}
		});
		int whiteR = 0;
		for (int i = 0; i < cir.length; i++) {
			int hitCount = 0;
			Circle c = cir[i];
			for (int j = 0; j < i; j++) {
				// 以前のところに含まれているかチェック
				Circle other = cir[j];
				int powX = (c.X - other.X) * (c.X - other.X);
				int powY = (c.Y - other.Y) * (c.Y - other.Y);
				int powR = other.R * other.R;
				if (powX + powY <= powR) {
					hitCount++;
				}
			}
			// 偶数なら白
			if (hitCount % 2 == 0) {
				whiteR += c.R * c.R;
			} else {
				whiteR -= c.R * c.R;
			}
		}

		double sum = Math.PI * whiteR;
		return sum;
	}