Cod sursa(job #1907213)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 6 martie 2017 18:18:50
Problema Dame Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
using namespace std;
ifstream f ("dame.in");
ofstream g ("dame.out");
int c[1003],d1[2003],d2[2003],n,nr,v[1003];;
void back(int k)
{
    for(int i=1;i<=n;++i)
    {
        if(!c[i]&&!d1[i+k]&&!d2[i-k+n+1])
        {
            v[k]=i;
            c[i]=1;
            d1[i+k]=1;
            d2[i-k+n+1]=1;
            if(k==n)
            {
                ++nr;
                if(nr==1) for(int j=1;j<=n;++j) g<<j<<' '<<v[j]<<'\n';
            }
            else if(nr==0) back(k+1);
            c[i]=0;
            d1[i+k]=0;
            d2[i-k+n+1]=0;
        }
    }
}
int main()
{
    f>>n;
    if(n==2)
    {
        g<<1<<'\n'<<1<<' '<<1;
        return 0;
    }
    if(n==3)
    {
        g<<2<<'\n'<<1<<' '<<1<<'\n'<<2<<' '<<3;
        return 0;
    }
    g<<n<<'\n';
    back(1);
    return 0;
}