Cod sursa(job #6269)
Utilizator | Data | 18 ianuarie 2007 17:11:26 | |
---|---|---|---|
Problema | Dame | Scor | 30 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 2.35 kb |
program dame;
var f,g:text;
n:longint;
c,d,s:array[-2001..2001] of boolean;
v:array[1..1005] of longint;
procedure iofile;
begin
assign(f,'dame.in');
reset(f);
assign(g,'dame.out');
rewrite(g);
readln(f,n);
close(f);
end;
procedure afis;
var i:longint;
begin
writeln(g,n);
for i:=1 to n do
writeln(g,i,' ',v[i]);
close(g);
end;
procedure prel(lin:longint);
var i:longint;
begin
if lin=n+1 then begin
afis;
halt;end else
for i:=1 to n do
if ( c[i]=false)and(d[lin-i]=false)and(s[i+lin]=false) then
begin
c[i]:=true;
d[lin-i]:=true;
s[i+lin]:=true;
v[lin]:=i;
prel(lin+1);
c[i]:=false;
d[lin-i]:=false;
s[i+lin]:=false;
end;
end;
begin
iofile;
if n=1 then
begin
writeln(g,'1');
writeln(g,'1 1');
close(g);
end else
if n=2 then
begin
writeln(g,'1');
writeln(g,'1 1');
close(g);
end else if n=3 then
begin
writeln(g,'2');
writeln(g,'1 1');
writeln(g,'2 3');
close(g);
end
else
begin
fillchar(d,sizeof(d),false);
fillchar(s,sizeof(s),false);
fillchar(c,sizeof(c),false);
prel(1);
end;
end.