Cod sursa(job #89065)

Utilizator johnyJohny Deep johny Data 5 octombrie 2007 18:22:12
Problema Dame Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.39 kb
{ 100 !!p}
program dame2;
var x,p: array[1..1010] of integer;
    n,i: integer;
    f: text;


procedure citire;
begin
  assign(f,'dame.in');
  reset(f);
  readln(f,n);
  close(f);
end;


procedure sol;
var k,i,j: integer;
begin
  k:=n mod 12;
  if (k=3) or (k=9) then
  begin
     for i:=2 to n div 2 do x[i-1]:=2*i;
     x[i]:=2;
  end
  else
     for i:=1 to n div 2 do
     x[i]:=2*i;


  if k=8 then
     begin
     j:=1;
     while (2*j+1)<n do
     begin
       inc(i);
       x[i]:=2*j+1;
       inc(i);
       x[i]:=2*j-1;
       j:=j+2;
     end;
     end
  else
  if k=2 then
   begin
     inc(i);
     x[i]:=3;
     inc(i);
     x[i]:=1;
     j:=3;
     while (2*j+1<n) do
     begin
       inc(i);
       x[i]:=2*j+1;
       j:=j+1;
     end;
     inc(i);
     x[i]:=5;
   end
   else

   if (k=3) or (k=9) then
   begin
     j:=2;
     while (2*j+1<=n) do
     begin
       inc(i);
       x[i]:=2*j+1;
       inc(j);
     end;
    inc(i);
    x[i]:=1;
    inc(i);
    x[i]:=3;
   end
   else
   begin
     j:=1;
     while (2*j-1)<=n do
     begin
       inc(i);
       x[i]:=2*j-1;
       inc(j);
     end;
   end;

end;

begin
  citire;
  assign(f,'dame.out');
  rewrite(f);
  case n of
    1,2: begin
         writeln(f,1);
         writeln(f,'1 1');
       end;
    3: begin
         writeln(f,2);
         writeln(f,'1 1');
         writeln(f,'2 3');
       end;
    4: begin
         writeln(f,4);
         writeln(f,'1 2');
         writeln(f,'2 4');
         writeln(f,'3 1');
         writeln(f,'4 3');
       end;
    5: begin
         writeln(f,5);
         writeln(f,'1 1');
         writeln(f,'2 3');
         writeln(f,'3 5');
         writeln(f,'4 2');
         writeln(f,'5 4');
       end;
    6: begin
         writeln(f,6);
         writeln(f,'1 2');
         writeln(f,'2 4');
         writeln(f,'3 6');
         writeln(f,'4 1');
         writeln(f,'5 3');
         writeln(f,'6 5');
       end;
    7: begin
         writeln(f,7);
         writeln(f,'1 1');
         writeln(f,'2 3');
         writeln(f,'3 5');
         writeln(f,'4 7');
         writeln(f,'5 2');
         writeln(f,'6 4');
         writeln(f,'7 6');
       end;
  end;
  if n>=8 then
  begin
    sol;
    writeln(f,n);
    for i:=1 to n do
      writeln(f,i,' ',x[i]);
  end;
  close(f);
end.