Cod sursa(job #237321)
Utilizator | 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.