Отримання знань

дистанційна підтримка освіти школярів


Ограждение космической станции
http://acm.pku.edu.cn/JudgeOnline/problem?id=1096

   Входные данные

   Выходные данные

   Пример входных данных

   Пример выходных данных

   Анализ условия и обсуждение идеи решения

   Пример решения на Pascal:

const
ddx:array[0..5] of longint=(0,0,1,-1,0,0);
ddy:array[0..5] of longint=(1,-1,0,0,0,0);
ddz:array[0..5] of longint=(0,0,0,0,1,-1);
type
rec1=record
     x,y,z:integer;
     end;
var
sp:array[-1..61,-1..61,-1..61] of integer;
lst:array[1..216000] of rec1;
q:array[1..239328] of rec1;
i,j,n,m,k,l,p,h,t,xx,yy,zz:longint;
begin
fillchar(sp,sizeof(sp),255);
repeat
  readln(n,m,k,l);
  if (n=0) and (m=0) and (k=0) and (l=0) then break;
  fillchar(sp,sizeof(sp),0);
  for i:=1 to l do
    begin
    read(p);
    with lst[i] do
      begin
      x:=p mod n;
      p:=p div n;
      y:=p mod m;
      z:=p div m;
      sp[x,y,z]:=2;
      end;
    end;
  h:=1;
  t:=1;
  with q[1] do
    begin
    x:=-1;
    y:=-1;
    z:=-1;
    end;
  while (h <= t) do
    begin
    with q[h] do
      for i:=0 to 5 do
        begin
        xx:=x+ddx[i];
        yy:=y+ddy[i];
        zz:=z+ddz[i];
        if xx >= -1 then
          if yy >= -1 then
            if zz >= -1 then
              if xx <= n then
                if yy <= m then
                  if zz <= k then
                    if sp[xx,yy,zz]=0 then
                      begin
                      sp[xx,yy,zz]:=1;
                      inc(t);
                      with q[t] do
                        begin
                        x:=xx;
                        y:=yy;
                        z:=zz;
                        end;
                      end;
        end;
    inc(h);
    end;
  j:=0;
  for xx:=0 to n do
    for yy:=0 to m do
      for zz:=0 to k do
        if sp[xx,yy,zz]=2 then
          for i:=0 to 5 do
            if sp[xx+ddx[i],yy+ddy[i],zz+ddz[i]]=1 then inc(j);
  writeln('The number of faces needing shielding is ',j,'.');
until false;
end.
 

Попередня Зміст Наступна
В системі: гості - (); користувачі - (0)