Cod sursa(job #3339635)

Utilizator BidonTurtitBezdedan Eric BidonTurtit Data 9 februarie 2026 13:07:01
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.43 kb
#include <iostream>
#include <fstream>
 using namespace std;

 ifstream fin("damesah.in");
 ofstream fout("damesah.out");
 int n,x[20],sol=0,ok=0,diag_pr[50],col[50],diag_sc[50];
void afisare()
{
    for(int i=1;i<=n;i++)
    {
        fout<<x[i]<<" ";
    }
    fout<<"\n";
}
bool valid(int k)
{
    if(col[x[k]]==1 || diag_pr[k+x[k]]==1 || diag_sc[k-x[k]+n]==1)
    {
        return 0;
    }
    return 1;
}
void update1(int a, int b)
{
    col[a]=0;
    diag_pr[b+a]=0;
    diag_sc[b-a+n]=0;
}
void update2(int a, int b)
{
    col[a]=1;
    diag_pr[b+a]=1;
    diag_sc[b-a+n]=1;
}
void regine(int n)
{
    int k=1;
    x[k]=1;
    while(k>0)
    {
        if(x[k]<=n)
        {
            if(valid(k))
            {
               update2(x[k],k);
               if(k==n)
               {
                   if(ok==0)
                   {
                       afisare();
                       ok=1;
                   }
                   sol++;
                    update1(x[k],k);
                    x[k]++;
               }
               else
               {
                    x[++k]=1;
               }

            }
            else
            {
                x[k]++;
            }
        }
        else
        {
            update1(x[--k],k);
            x[k]++;
        }
    }
}
 int main()
 {
     fin>>n;
     regine(n);
     fout<<sol;
     return 0;
 }