Cod sursa(job #231105)

Utilizator kis_lorikis levente lorand kis_lori Data 14 decembrie 2008 11:30:56
Problema Tablete Scor 70
Compilator fpc Status done
Runda Algoritmiada 2009, Runda 1, Studenti Marime 1.29 kb
var n,k,i,j,ia:longint;
    v:array [1..1010,1..1010] of longint;
begin
 assign(input,'tablete.in'); reset(input);
 assign(output,'tablete.out'); rewrite(output);
  readln(n,k);
  if n mod 2=0 then
   if k mod 2=0 then begin
    for i:=1 to n do
     for j:=1 to n do v[i,j]:=(i-1)*n+j;
   end
                else begin
    ia:=n-2;
    for i:=1 to n do begin
     v[i,1]:=i; v[i,n]:=n*n-i+1; v[1,i]:=n+i-1;
    end;
    for i:=2 to n do
     for j:=2 to n-1 do v[i,j]:=v[i-1,j]+ia;
    v[1,1]:=1; v[1,n]:=n*n;
   end
               else
    if k mod 2=0 then begin
     for i:=1 to n do v[i,n]:=n*n-i+1;
     for i:=1 to (n-1) div 2 do begin
     v[1,(i-1)*2+1]:=(i-1)*2*n+1; v[1,(i-1)*2+2]:=(i-1)*2*n+2;
     end;
     for i:=2 to n do
      for j:=1 to n-1 do v[i,j]:=v[i-1,j]+2;
     v[1,n]:=n*n;
    end
                else begin
     for i:=1 to n do
      for j:=1 to 2 do v[i,j]:=(i-1)*2+j;
     v[n,2]:=2*n+1;
     for i:=1 to (n-3) div 2 do begin
      v[1,i*2+1]:=i*2*n; v[1,i*2+2]:=i*2*n+3;
     end;
     for i:=2 to n do
      for j:=3 to n-1 do v[i,j]:=v[i-1,j]+2;
     v[1,n]:=(n-1)*n;
     for i:=2 to n do v[i,n]:=(n-1)*n+i;
    end;
 for i:=1 to n do begin
  for j:=1 to n do write(v[i,j],' ');
  writeln;
 end;
 close(input); close(output);
end.