⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ac1186.pas

📁 某牛人写的acm.tongji.edu.cn上大部分ac的代码,仅供学习研究,请不要用来作弊
💻 PAS
字号:
program tju1186;
type
  pointer=^cube;
  cube=record s,e:array[1..3]of integer;next:pointer;end;
var
  n,i,x,y,z,r,ans:longint;
  a,b,c,t:pointer;
procedure cut;
  var
    i:byte;
  begin
    for i:=1 to 3 do
      if (a^.s[i]>=b^.e[i]) or (a^.e[i]<=b^.s[i]) then begin
        new(t);t^:=b^;t^.next:=c;c:=t;
        exit;
      end;
    for i:=1 to 3 do begin
      if (a^.s[i]>b^.s[i]) and (a^.s[i]<b^.e[i]) then begin
        new(t);t^:=b^;t^.e[i]:=a^.s[i];t^.next:=c;c:=t;
        b^.s[i]:=a^.s[i];
      end;
      if (a^.e[i]>b^.s[i]) and (a^.e[i]<b^.e[i]) then begin
        new(t);t^:=b^;t^.s[i]:=a^.e[i];t^.next:=c;c:=t;
        b^.e[i]:=a^.e[i];
      end;
    end;
  end;
begin
  repeat
    read(n);b:=nil;
    for i:=1 to n do begin
      read(x,y,z,r);new(a);with a^ do begin
        s[1]:=x-r;e[1]:=x+r;s[2]:=y-r;e[2]:=y+r;s[3]:=z-r;e[3]:=z+r;
      end;
      c:=nil;
      while b<>nil do begin
        cut;
        t:=b;b:=b^.next;dispose(t);
      end;
      b:=a;b^.next:=c;
    end;
    ans:=0;
    while b<>nil do begin
      inc(ans,(b^.e[1]-b^.s[1])*(b^.e[2]-b^.s[2])*(b^.e[3]-b^.s[3]));
      t:=b;b:=b^.next;dispose(t);
    end;
    writeln(ans);
  until seekeof;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -