Cod sursa(job #182887)

Utilizator DanielGGlodeanu Ioan Daniel DanielG Data 21 aprilie 2008 14:06:49
Problema Dame Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.16 kb
var v:array[1..1005] of integer;
f:text; n,rest,i,aux:integer;
procedure citire;
begin
assign(f,'dame.in');reset(f);
readln(f,n);
close(f);
end;
procedure restn;
begin
rest:=n mod 12;
end;
procedure par;
begin
if ((rest=3) or (rest=9)) then
begin
v[1]:=4;
for i:=2 to n div 2-1 do
v[i]:=v[i-1]+2;
v[n div 2]:=2;
end
else
begin
v[1]:=2;
for i:=2 to n div 2 do
v[i]:=v[i-1]+2;
end;
end;
procedure impar;
begin
v[n div 2+1]:=1;
for i:=n div 2+2 to n do
v[i]:=v[i-1]+2;
end;
procedure aranjeaza;
begin
if ((rest=9) or (rest=3)) then
begin
for i:=n div 2 +3 to n do
v[i-2]:=v[i];
v[n-1]:=1;
v[n]:=3;
end
else if rest=2 then
begin
aux:=v[n div 2+1];
v[n div 2+1]:=v[n div 2+2];
v[n div 2+2]:=aux;
for i:=n div 2+4 to n do
v[i-1]:=v[i];
v[n]:=5;
end
else if rest=8 then
begin
i:=n div 2+1;
while (i<>(n+1)) do
begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
i:=i+2;
end;
end;
end;
procedure afiseaza;
begin
assign(f,'dame.out');rewrite(f);
if ((n=2) or (n=3)) then write(f,n-1)
else write(f,n);
for i:=1 to n do
writeln(f,i,' ',v[i]);
close(f);
end;
begin
citire;
restn;
par;
impar;
aranjeaza;
afiseaza;
end.