Heliport
const double eps = 1e-6;
int x[25], y[25], n, i, len, px, py, cases;
double ra, rb, r;
char dr;
bool check(double ox, double oy)
{
int i, s;
s = 0;
for (i = 0; i < n; i++)
if (x[i]>ox&&((y[i]>oy)^(y[i+1]>oy))) s++;
if (s % 2 == 0)return false;
for (i = 0; i < n; i++)
{
if ((x[i] - ox)*(x[i] - ox) + (y[i] - oy)*(y[i] - oy) < (r - eps)*(r - eps))
return false;
if (x[i] == x[i + 1] && ((y[i] > oy) ^ (y[i + 1] > oy)) && fabs(x[i] - ox) < r - eps)return false;
if (y[i] == y[i + 1] && ((x[i] > ox) ^ (x[i + 1] > ox)) && fabs(y[i] - oy) < r - eps)return false;
}
return true;
}
bool ok()
{
int i, j;
double di, dd, mx, my, dx, dy;
for (i = 0; i < n; i++)
if (x[i] == x[i + 1])
for (j = 0; j < n;j++)
if (y[j] == y[j + 1]){
if (check(x[i] + r, y[j] + r))return true;
if (check(x[i] + r, y[j] - r))return true;
if (check(x[i] - r, y[j] + r))return true;
if (check(x[i] - r, y[j] - r))return true;
}
for (i = 0; i < n; i++)
for (j = 0; j < n;j++)
if (x[i] == x[i + 1])
{
di = fabs(x[j] - (x[i] + r));
if (di < r)
{
dd = sqrt(r*r-di*di);
if (check(x[i] + r, y[j] + dd))return true;
if (check(x[i] + r, y[j] - dd))return true;
}
di = fabs(x[j]-(x[i]-r));
if (di < r)
{
dd = sqrt(r*r - di*di);
if (check(x[i] + r, y[j] + dd))return true;
if (check(x[i] + r, y[j] - dd))return true;
}
}
else
{
di = fabs(y[j]-(y[i]+r));
if (di < r)
{
dd = sqrt(r*r - di*di);
if (check(x[i] + dd, y[j] + r))return true;
if (check(x[i] - dd, y[j] + r))return true;
}
di = fabs(y[j] - (y[i] - r));
if (di < r)
{
dd = sqrt(r*r - di*di);
if (check(x[i] + dd, y[j] + r))return true;
if (check(x[i] + dd, y[j] - r))return true;
}
}
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
{
mx = (x[i]+x[j])/2.0;
my = (y[i]+y[j])/2.0;
di = sqrt((x[i]-mx)*(x[i]-mx)+(y[i]-my)*(y[i]-my));
if (di>0 && di < r)
{
dd = sqrt(r*r-di*di);
dx = (my - y[i]) / di*dd;
dy = (x[i]-mx)/di*dd;
if (check(mx + dx, my + dy))return true;
if (check(mx - dx, my - dy))return true;
}
}
return false;
}
int main()
{
while (scanf_s("%d",&n)&&n)
{
if (cases)printf("\n");
px = 0; py = 0;
for (i = 1; i <= n; i++)
{
scanf_s("%d %c", &len, &dr);
if (dr == 'R')px += len;
if (dr == 'L')px -= len;
if (dr == 'U')py += len;
if (dr == 'D')py -= len;
x[i] = px;
y[i] = py;
}
ra = 0; rb = 999;
while (rb - ra > eps)
{
r = (ra + rb) / 2;
if (ok())ra = r;
else rb = r;
}
printf("Case Number %d radius is: %.21f\n", ++cases, r);
}
return 0;
}