OJ-Problems-Source/HDOJ/1417_autoAC.cpp

55 lines
1.1 KiB
C++

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct data
{
int x1,y1,z1;
int x2,y2,z2;
data(){}
data(int _x,int _y,int _z,int _d)
{
x1=_x;y1=_y;z1=_z;
x2=_x+_d;y2=_y+_d;z2=_z+_d;
}
data(int _x1,int _y1,int _z1,int _x2,int _y2,int _z2)
{
x1=_x1;y1=_y1;z1=_z1;
x2=_x2;y2=_y2;z2=_z2;
}
bool ok()
{
return x1<x2&&y1<y2&&z1<z2;
}
int volume()
{
if(ok())
return (x2-x1)*(y2-y1)*(z2-z1);
else
return 0;
}
};
data inter(data a,data b)
{
if(a.ok())
return data(max(a.x1,b.x1),max(a.y1,b.y1),max(a.z1,b.z1),min(a.x2,b.x2),min(a.y2,b.y2),min(a.z2,b.z2));
else
return data(0,0,0,-1);
}
int main()
{
int n,x,y,z,d;
while(scanf("%d",&n),n)
{
scanf("%d%d%d%d",&x,&y,&z,&d);
data ans(x,y,z,d);
for(int i=1;i<n;i++)
{
scanf("%d%d%d%d",&x,&y,&z,&d);
ans=inter(ans,data(x,y,z,d));
}
printf("%d\n",ans.volume());
}
return 0;
}