Cod sursa(job #1368144)

Utilizator SmitOanea Smit Andrei Smit Data 2 martie 2015 14:34:57
Problema Dame Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdlib>
#include <fstream>

using namespace std;

int n,k,st[1004];
bool viz[1004],d1[2010],d2[2010];

inline void Citire()
{
    ifstream fin("dame.in");
    fin>>n;
    fin.close();
}

inline void Afisare()
{
    int i;
    ofstream fout("dame.out");
    fout<<n<<"\n";
    for(i=1;i<=n;++i)
        fout<<i<<" "<<st[i]<<"\n";
    fout.close();
    exit(0);
}

inline bool Valid(int x,int k)
{
    if(viz[x]==1)   return false;
    if(d1[n+x-k]==1)    return false;
    if(d2[x+k-1]==1)    return false;
    return true;
}

inline void Back(int k)
{
    int i;
    //cout<<k<<"\n";
    if(k==n+1)
        Afisare();
    else
        for(i=1;i<=n;++i)
            if(Valid(i,k))
            {
                st[k]=i;
                viz[i]=1;
                d1[n+i-k]=1;
                d2[i+k-1]=1;
                Back(k+1);
                viz[i]=0;
                d1[n+i-k]=0;
                d2[i+k-1]=0;
            }
}

int main()
{
    Citire();
    Back(1);
    return 0;
}