mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
55 lines
1.1 KiB
C++
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;
|
||
|
}
|