#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 105
struct Building{
int id;
double x,y,w,d,h;
bool operator < (const Building& p) const {
return x<p.x||(x==p.x && y<p.y);
}
}b[maxn];
int n;
double x[maxn*2];
bool cover(int i , double mx)
{
return b[i].x<=mx && b[i].x+b[i].w>=mx;
}
bool visible(int i, double mx)
{
if(!cover(i,mx)) return false;
for(int k=0; k<n; k++)
if(b[k].y<b[i].y && b[k].h>=b[i].h && cover(k,mx))
return false;
return true;
}
int main()
{
int kase=1;
while(~scanf("%d",&n) && n)
{
for(int i=0; i<n; i++)
{
cin>>b[i].x>>b[i].y>>b[i].w>>b[i].d>>b[i].h;
x[i*2]=b[i].x;
x[i*2+1]=b[i].x+b[i].w;
b[i].id=i+1;
}
sort(b,b+n);
sort(x,x+2*n);
int num=unique(x,x+2*n)-x;
cout<<endl;
printf("Case %d visible are as follows:\n",kase++);
for(int i=0; i<n; i++)
{
bool vis=false;
for(int j=0; j<num; j++)
if(visible(i,(x[j]+x[j+1])/2))
{
vis=true;
break;
}
if(vis)
cout<<b[i].id<<" ";
}
cout<<endl;
}
return 0;
}
uva 221
最新推荐文章于 2020-10-08 16:15:45 发布