Cod sursa(job #237321)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 29 decembrie 2008 16:09:03
Problema Tablete Scor 40
Compilator fpc Status done
Runda Arhiva de probleme Marime 6.14 kb
program alex;
var f,g:text;
    n,k,d,i,j:integer;
    a:array[1..1000,1..1000]of longint;
begin
assign(f,'tablete.in');reset(f);
readln(f,n,k);
close(f);
d:=0;
for i:=1 to n do
    for j:=1 to n do
        begin
        d:=d+1;
        a[i,j]:=d;
        end;
assign(g,'tablete.out');rewrite(g);
if n=3 then begin
            writeln(g,1,' ',2,' ',3);
            writeln(g,4,' ',6,' ',7);
            write(g,5,' ',8,' ',9);
            end
       else if n=4 then if k=2 then for i:=1 to n do
                                        begin
                                        for j:=1 to n do
                                            write(g,a[i,j],' ');
                                        writeln(g);
                                        end
                                else begin
                                     writeln(g,2,' ',3,' ',4,' ',8);
                                     writeln(g,1,' ',5,' ',6,' ',7);
                                     writeln(g,9,' ',11,' ',12,' ',16);
                                     write(g,10,' ',13,' ',14,' ',15);
                                     end
                    else if n mod 2=0 then if k mod 2=0 then for i:=1 to n do
                                                                 begin
                                                                 for j:=1 to n do
                                                                     write(g,a[i,j],' ');
                                                                 writeln(g);
                                                                 end
                                                         else begin
                                                              for i:=1 to n-1 do
                                                                  begin
                                                                  d:=a[i,k];
                                                                  for j:=k to n-1 do
                                                                      a[i,j]:=a[i,j+1];
                                                                  a[i,n]:=a[i+1,1];
                                                                  a[i+1,1]:=d;
                                                                  end;
                                                               d:=a[n-1,n-1];
                                                               a[n-1,n-1]:=a[n-1,n];
                                                               a[n-1,n]:=a[n,k];
                                                               for i:=k downto 3 do
                                                                   a[n,i]:=a[n,i-1];
                                                               a[n,2]:=d;
                                                               for i:=1 to n do
                                                                   begin
                                                                   for j:=1 to n do
                                                                       write(g,a[i,j],' ');
                                                                   writeln(g);
                                                                   end;
                                                               end
                                 else begin
                                      if k mod 2=0 then begin
                                                        i:=0;
                                                        repeat
                                                        i:=i+2;
                                                        d:=a[i,k];
                                                        for j:=k to n-1 do
                                                            a[i,j]:=a[i,j+1];
                                                        a[i,n]:=a[i+1,1];
                                                        a[i+1,1]:=d;
                                                        until i=n-1;
                                                        for i:=1 to n do
                                                            begin
                                                            for j:=1 to n do
                                                                write(g,a[i,j],' ');
                                                            writeln(g);
                                                            end;
                                                        end
                                                    else begin
                                                         i:=-1;
                                                         repeat
                                                         i:=i+2;
                                                         d:=a[i,k];
                                                         for j:=k to n-1 do
                                                             a[i,j]:=a[i,j+1];
                                                         a[i,n]:=a[i+1,1];
                                                         a[i+1,1]:=d;
                                                         until i=n-2;
                                                         d:=a[n-1,n];
                                                         a[n-1,n]:=a[n,k];
                                                         for i:=k downto 2 do
                                                             a[n,i]:=a[n,i-1];
                                                         a[n,1]:=d;
                                                         for i:=1 to n do
                                                             begin
                                                             for j:=1 to n do
                                                                 write(g,a[i,j],' ');
                                                             writeln(g);
                                                             end;
                                                         end;
                                      end;
close(g);
end.