📄 ac1186.pas
字号:
program tju1186;
const
maxn=100;
var
x1,y1,z1,x2,y2,z2:array[1..maxn]of integer;
n,i,x,y,z,r,ans:longint;
procedure cal(l,u1,v1,w1,u2,v2,w2:longint);
begin
while (l>0) and ((u2<=x1[l]) or (u1>=x2[l]) or (v2<=y1[l]) or
(v1>=y2[l]) or (w2<=z1[l]) or (w1>=z2[l])) do dec(l);
if l=0 then begin inc(ans,(u2-u1)*(v2-v1)*(w2-w1));exit;end;
if u1<x1[l] then begin cal(l-1,u1,v1,w1,x1[l],v2,w2);u1:=x1[l];end;
if u2>x2[l] then begin cal(l-1,x2[l],v1,w1,u2,v2,w2);u2:=x2[l];end;
if v1<y1[l] then begin cal(l-1,u1,v1,w1,u2,y1[l],w2);v1:=y1[l];end;
if v2>y2[l] then begin cal(l-1,u1,y2[l],w1,u2,v2,w2);v2:=y2[l];end;
if w1<z1[l] then cal(l-1,u1,v1,w1,u2,v2,z1[l]);
if w2>z2[l] then cal(l-1,u1,v1,z2[l],u2,v2,w2);
end;
begin
repeat
read(n);ans:=0;
for i:=1 to n do begin
read(x,y,z,r);
x1[i]:=x-r;y1[i]:=y-r;z1[i]:=z-r;
x2[i]:=x+r;y2[i]:=y+r;z2[i]:=z+r;
cal(i-1,x1[i],y1[i],z1[i],x2[i],y2[i],z2[i]);
end;
writeln(ans);
until seekeof;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -