Cod sursa(job #3302506)

Utilizator Victor5539Tanase Victor Victor5539 Data 8 iulie 2025 13:04:40
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <cmath>

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

const int MAX=13;
int n,colmask,p_diagmask,s_diagmask,sol,v[MAX+5];
bool print=0;

void bkt(int pas)
{
    if (pas==n)
    {
        if (!print)
        {
            for (int i=0; i<n; i++)
                fout<<(int)log2(v[i])+1<<" ";
            fout<<'\n';

            print=1;
        }

        sol++;
    }
    else
    {
        int mask=colmask&(s_diagmask>>pas)&(p_diagmask>>(n-1-pas));

        while (mask)
        {
            int lsb=mask&(-mask);
            v[pas]=lsb;

            colmask^=lsb;
            s_diagmask^=(lsb<<pas);
            p_diagmask^=(lsb<<(n-1-pas));
            bkt(pas+1);
            colmask^=lsb;
            s_diagmask^=(lsb<<pas);
            p_diagmask^=(lsb<<(n-1-pas));

            mask^=lsb;
        }

    }
}
int main()
{
    fin>>n;

    colmask=(1<<n)-1;
    p_diagmask=(1<<(2*n-1))-1;
    s_diagmask=(1<<(2*n-1))-1;

    bkt(0);

    fout<<sol;

    return 0;
}