Cod sursa(job #231619)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 14 decembrie 2008 12:44:12
Problema Tablete Scor 70
Compilator fpc Status done
Runda Algoritmiada 2009, Runda 1, Clasele 9-10 Marime 1.09 kb
var a:array[1..1000,1..1000] of longint;
    f,g:Text;
    x,y,k,n,i,j:longint;

begin
 assign(f,'tablete.in'); reset(f);
 assign(g,'tablete.out'); rewrite(g);
 read(f,n,k);
 for i:=1 to n do
  for j:=1 to n do
   a[i,j]:=(i-1)*n+j;

 if (n and 1=1) and (k and 1=0) then begin {impar par}
  for i:=1 to n do
   if a[i,k] and 1=1 then begin
    a[i-1,n]:=a[i,k];
    for j:=1 to k do
     a[i,j]:=a[i,j]-1;
   end;
 end;

 if (n and 1=1) and (k and 1=1) then begin {impar impar}
  a[2,1]:=a[1,k];
  for j:=k to n do
   a[1,j]:=a[1,j]+1;
  for i:=3 to n do
   if a[i,k] and 1=1 then begin
    a[i-1,n]:=a[i,k];
    for j:=1 to k do
     a[i,j]:=a[i,j]-1;
   end;
 end;

 if (n and 1=0) and (k and 1=1) then begin {par impar}
  for i:=1 to n do
   if a[i,k] and 1=1 then begin
    x:=a[i,k];
    y:=a[i+1,k];
    for j:=1 to k do
     a[i+1,j]:=a[i+1,j]-1;
    for j:=k to n do
     a[i,j]:=a[i,j]+1;
    a[i,n]:=y;
    a[i+1,1]:=x;
   end;
 end;

 for i:=1 to n do begin
  for j:=1 to n-1 do
   write(g,a[i,j],' ');
  writeln(g,a[i,n]);
 end;
 close(f); close(g);
end.