Cod sursa(job #231211)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 14 decembrie 2008 11:48:11
Problema Tablete Scor 70
Compilator fpc Status done
Runda Algoritmiada 2009, Runda 1, Studenti Marime 2.52 kb
var f,g:text;
    v:array[0..1010,0..1010]of longint;
    n,k,p,i,c,j,t:longint;

begin
assign(f,'tablete.in');
assign(g,'tablete.out');
reset(f);
rewrite(g);
read(f,n,k);
p:=n div 2;
if (n mod 2=1)then dec(p);
t:=2*n;
for i:=1 to p do
  begin
    c:=t;
    for j:=n downto k+1 do
      begin
        if (j mod 2=0)then
          begin
            v[2*i-1,j]:=c;
            v[2*i,j]:=c-1;
          end else
          begin
            v[2*i,j]:=c;
            v[2*i-1,j]:=c-1;
          end;
        dec(c,2);
      end;
    v[2*i-1,k]:=c;
    v[2*i,k]:=c-2;
    for j:=1 to k-1 do v[2*i,j]:=j+t-2*n;
    c:=k+t-2*n;
    for j:=1 to k-1 do
      begin
        if (c=v[2*i,k])then inc(c);
        v[2*i-1,j]:=c;
        inc(C);
      end;
    inc(t,2*n);
  end;
if (n mod 2=1)then
  begin
    inc(t,n);
    c:=t;
    for i:=n downto k+1 do
      begin
        if (i mod 2=0)then
          begin
            v[n-2,i]:=c;
            v[n-1,i]:=c-1;
            v[n,i]:=c-2;
          end else
          begin
            v[n,i]:=c;
            v[n-1,i]:=c-1;
            v[n-2,i]:=c-2;
          end;
        dec(c,3);
      end;
    if (k mod 2=0)then
      begin
{        dec(v[n-2,k+1]);}
        v[n-2,k]:=c-4;
        v[n-1,k]:=c-2;
        v[n,k]:=c;
        for i:=1 to k-1 do v[n-2,i]:=i+t-3*n;
        c:=k+t-3*n;
        for i:=1 to k-1 do
          begin
            if (c=v[n-2,k])or(c=v[n,k])then inc(c);
            if (c=v[n-2,k])or(c=v[n,k])then inc(c);
            v[n-1,i]:=c;
            inc(c);
          end;
        for i:=1 to k-1 do
          begin
            if (c=v[n-2,k])or(c=v[n-1,k])then inc(c);
            if (c=v[n-2,k])or(c=v[n-1,k])then inc(c);
            v[n,i]:=c;
            inc(c);
          end;
      end else
      begin
        dec(v[n,k+1]);
        v[n-2,k]:=c+1;
        v[n-1,k]:=c-3;
        v[n,k]:=c-5;
        for i:=1 to k-1 do v[n,i]:=i+t-3*n;
        c:=k+t-3*n;
        for i:=1 to k-1 do
          begin
            if (c=v[n-2,k])or(c=v[n,k])then inc(c);
            if (c=v[n-2,k])or(c=v[n,k])then inc(c);
            v[n-1,i]:=c;
            inc(c);
          end;
        for i:=1 to k-1 do
          begin
            if (c=v[n,k])or (c=v[n-1,k])then inc(c);
            if (c=v[n,k])or (c=v[n-1,k])then inc(c);
            v[n-2,i]:=c;
            inc(c);
          end;
      end;
  end;
for i:=1 to n do
  begin
    for j:=1 to n do write(g,v[i,j],' ');
    writeln(g);
  end;
close(f);
close(g);
end.