Cod sursa(job #35780)

Utilizator fogabFodor Gabor fogab Data 22 martie 2007 15:21:23
Problema Diamant Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.12 kb
var f:text;
    n,m,i,j,h:integer;
    x,k:longint;
    a:array[1..2,-44100..44100] of longint;
    l:array[1..2,1..1000000] of longint;
    la:array[1..2] of longint;
begin
assign(f,'diamant.in');
reset(f);
read(f,n,m,x);
close(f);
la[1]:=1;
a[1,0]:=1;
h:=1;
for i:=1 to n do
  for j:=1 to m do
    begin
    for k:=1 to la[h] do
      begin
      if a[h mod 2+1,l[h,k]+i*j]=0 then
        begin
        inc(la[h mod 2+1]);
        l[h mod 2+1,la[h mod 2+1]]:=l[h,k]+i*j;
        end;
      a[h mod 2+1,l[h,k]+i*j]:=a[h mod 2+1,l[h,k]+i*j]+a[h,l[h,k]];
      if a[h mod 2+1,l[h,k]-i*j]=0 then
        begin
        inc(la[h mod 2+1]);
        l[h mod 2+1,la[h mod 2+1]]:=l[h,k]-i*j;
        end;
      a[h mod 2+1,l[h,k]-i*j]:=a[h mod 2+1,l[h,k]-i*j]+a[h,l[h,k]];
      if a[h mod 2+1,l[h,k]]=0 then
        begin
        inc(la[h mod 2+1]);
        l[h mod 2+1,la[h mod 2+1]]:=l[h,k];
        end;
      a[h mod 2+1,l[h,k]]:=a[h mod 2+1,l[h,k]]+a[h,l[h,k]];
      a[h,l[h,k]]:=0;
      end;
   la[h]:=0;
   h:=h mod 2+1;
   end;
assign(f,'diamant.out');
rewrite(f);
writeln(f,a[h,x]);
close(f);
end.