Cod sursa(job #2838042)

Utilizator Abramiuc_AndreiAbramiuc Andrei Abramiuc_Andrei Data 23 ianuarie 2022 00:16:07
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");


bool drst[27],stdr[29],col[15];
#define stdr (stdr+12)

int n,sol[15],nrsol;

bool valid(int k,int j)
{
     if(col[j]==0 && stdr[k-j]==0 &&
        drst[k+j]==0) return 1;

     return 0;
}

void afisare()
{
     for(int i=1;i<=n;i++)
          fout<<sol[i]<<' ';
     fout<<'\n';
}

void back(int k)
{
     for(int j=1;j<=n;j++)
     {
          sol[k]=j;
          if(valid(k,j))
          {
               col[j]=stdr[k-j]=drst[k+j]=1;
               if(k==n)
               {
                    nrsol++;
                    if(nrsol==1)
                         afisare();
               }
               else back(k+1);

              col[j]=stdr[k-j]=drst[k+j]=0;
          }
     }
}

int main()
{
     fin>>n;
     back(1);
     fout<<nrsol;
    return 0;
}