/* Wed Mar 24 22:28:35 JST 2004 */ /* Wed Mar 24 22:52:50 JST 2004 */ #include #include #define min(x,y) (((x)<(y))?(x):(y)) int x1, x2, _y1, y2, z1, z2; typedef struct { int x, y, z; double r; } balloon_t; balloon_t b[16]; void swap(int *x, int *y); int main() { int icase, i, j, n; double d, v; for (icase = 1; ; icase++) { scanf("%d", &n); if (n == 0) { break; } scanf("%d %d %d", &x1, &_y1, &z1); scanf("%d %d %d", &x2, &y2, &z2); if (x1 > x2) { swap(&x1, &x2); } if (_y1 > y2) { swap(&_y1, &y2); } if (z1 > z2) { swap(&z1, &z2); } v = (x2-x1)*(y2-_y1)*(z2-z1); for (i = 0; i < n; i++) { scanf("%d %d %d", &b[i].x, &b[i].y, &b[i].z); d = (double)min(x2 - b[i].x, b[i].x - x1); d = min(d, (double)min(y2 - b[i].y, b[i].y - _y1)); d = min(d, (double)min(z2 - b[i].z, b[i].z - z1)); for (j = 0; j < i; j++) { d = min(d, sqrt((b[i].x-b[j].x)*(b[i].x-b[j].x)+ (b[i].y-b[j].y)*(b[i].y-b[j].y)+ (b[i].z-b[j].z)*(b[i].z-b[j].z)) - b[j].r); } if (d < 0) { b[i].r = 0.0; } else { b[i].r = d; } v -= 4 * b[i].r * b[i].r * b[i].r * M_PI / 3; } if (icase > 1) { printf("\n"); } printf("Box %d: %d\n", icase, (int)floor(v + 0.5)); } return 0; } void swap(int *x, int *y) { int t; t = *x; *x = *y; *y = t; }