Cod sursa(job #22064)

Utilizator alex_damianDamian Alexandru alex_damian Data 25 februarie 2007 15:32:09
Problema Dame Scor 95
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.35 kb
var a:array[1..10000] of integer;
  n,i,j,p,impar,x,y,aux:integer;ok:boolean;
  f,g:text;

begin
assign(f,'dame.in');reset(f);
assign(g,'dame.out');rewrite(g);
readln(f,n);
if n=1 then begin
  writeln(g,'1');
  writeln(g,'1 1');
end
else if n=2 then begin
  writeln(g,'1');
  writeln(g,'1 1');
end
else if n=3 then begin
  writeln(g,'2');
  writeln(g,'1 1');
  writeln(g,'2 3');
end
else if n=4 then begin
  writeln(g,'3');
  writeln(g,'1 1');
  writeln(g,'3 2');
  writeln(g,'2 4');
end
else begin
  p:=1;
  if (n mod 12) in [3,9] then ok:=true else ok:=false;
  if ok then i:=4 else i:=2;
  while i<=n do begin
    a[p]:=i;
    inc(i,2);
    inc(p);
  end;
  if ok then begin a[p]:=2;inc(p); end;
  impar:=p;
  i:=1;
  while i<=n do begin
    a[p]:=i;
    inc(i,2);
    inc(p);
  end;
  if n mod 12=8 then begin
    i:=impar;
    while i<=n do begin
      aux:=a[i];a[i]:=a[i+1];a[i+1]:=aux;
      inc(i,2)
    end;
  end;
  if n mod 12=2 then begin
    i:=impar;
    aux:=a[i];a[i]:=a[i+1];a[i+1]:=a[i];
    for j:=i+2 to p-1 do a[j]:=a[j+1];
    a[p-1]:=5;
  end;
  if (n mod 12=3) or (n mod 12=9) then begin
    i:=impar;x:=a[i];y:=a[i+1];
    for j:=i to p-2 do a[j]:=a[j+2];
    a[p-2]:=x;
    a[p-1]:=y;
  end;
  writeln(g,n);
  for i:=1 to n do
    writeln(g,i,' ',a[i]);
end;
close(f);
close(g);
end.