Cod sursa(job #2313403)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 6 ianuarie 2019 20:24:49
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define NMAX 14
using namespace std;
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");
bitset <NMAX> fcol;
bitset <2 * NMAX> diag1, diag2;
int n, ans, v [NMAX];
void afisare (){
    for (int i = 1; i <= n; i ++)
        fout << v [i] << " ";
    fout << '\n';
}
void setch (bool val, int coloana, int linie){
    fcol [coloana] = diag1 [coloana - linie + n - 1] = diag2 [linie + coloana] = val;
}
void bkt (int linie){
    if (linie == n + 1){
        if (!ans)afisare ();
        ans ++;
    }
    else{
        for (int coloana = 1; coloana <= n; coloana ++){
            if (!fcol [coloana] && !diag1 [coloana - linie + n - 1] && !diag2 [linie + coloana]){
                v [linie] = coloana; setch (1, coloana, linie);
                bkt (linie + 1); setch (0, coloana, linie);
            }
        }
    }
}
int main (){
    fin >> n; bkt (1);
    fout << ans;
    return 0;
}