1188 Gleaming the Cubes

来源:互联网 发布:关键词优化有什么用 编辑:程序博客网 时间:2024/05/22 03:06
Gleaming the Cubes
Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 428   Accepted: 213

Description
As chief engineer of the Starship Interprize, the task of repairing the hyperstellar, cubic, transwarped-out software has fallen on your shoulders. Simply put, you must compute the volume of the intersection of anywhere from 2 to 1000 cubes.

Input
The input consists of several sets of cubes for which the volume of their intersections must be computed. The first line of each set contains a number (from 2 to 1000) which indicates the number of cubes which follow, one cube per line. Each line which describes a cube contains four integers. The first three integers are the x, y, and z coordinates of the corner of a cube, and the fourth integer is the positive distance which the cube extends in each of the three directions (parallel to the x, y, and z axes) from that corner.

Following the data for the first set of cubes will be a number which indicates how many cubes are in a second set, followed by the cube descriptions for the second set, again one per line. Following this will be a third set, and so on.A number =0 indicate the end of input.

Output
Your program should process sets all of cubes, outputting the volume of their intersections to the output file, one set per line, until a zero is read for the number of cubes.

Sample Input

 

Sample Output

 

Source
Mid-Central USA 1993

 ******************************************************************************************

********************************************************************************************

  • Source Code
    #include <iostream>using namespace std;struct Pot {int x,y,z;}L,R,C;int main() {int N,x,y,z,len;while(cin >> N,N!=0) {L.x = L.y = L.z = len = 0;cin >> L.x >> L.y >> L.z >> len;R.x = L.x + len;R.y = L.y + len;R.z = L.z + len;N--;bool flag = 1;while(N--) {C.x = C.y = C.z = len = 0;cin >> C.x >> C.y >> C.z >> len;if(C.x>=R.x||C.y>=R.y||C.z>=R.z){flag = 0;break;}if(C.x+len<=L.x||C.y+len<=L.y||C.z+len<=L.z){flag =  0;break;}if(C.x>L.x)L.x = C.x;if(C.y>L.y)L.y = C.y;if(C.z>L.z)L.z = C.z;if(C.x+len<R.x)R.x = C.x+len;if(C.y+len<R.y)R.y = C.y+len;if(C.z+len<R.z)R.z = C.z+len;}while(N>0){N--;cin >> C.x >> C.y >> C.z >> len;}if(flag == 0){cout << 0 << endl; continue;}cout << (R.x-L.x)*(R.y-L.y)*(R.z-L.z) << endl;}return 0;}
  • 259

    20 0 0 109 1 1 530 0 0 109 1 1 58 2 2 30
    原创粉丝点击