Cod sursa(job #6269)

Utilizator vanila0406Ionescu Victor vanila0406 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.