Cod sursa(job #3145113)

Utilizator patrick_burasanPatrick Burasan patrick_burasan Data 12 august 2023 20:14:09
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

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

int const SIZE = 13;
int N, ans, firstSol[SIZE + 5];
bool cols[SIZE + 5], diag1[2 * SIZE + 1], diag2[2 * SIZE + 1];

inline void back(int const &k) {
    if (k == N) {
        ans ++;
        if (ans == 1) {
            for (int i = 0; i < N; i++)
                fout << firstSol[i] + 1 << ' ';
            fout << '\n';
        }
        return;
    }

    for (int i = 0; i < N; i++) {
        if (!cols[i] && !diag1[i + k] && !diag2[i - k + N - 1]) {
            cols[i] = diag1[i + k] = diag2[i - k + N - 1] = 1;
            firstSol[k] = i;
            back(k + 1);
            cols[i] = diag1[i + k] = diag2[i - k + N - 1] = 0;
        }
    }
}

int main() {
    fin >> N;
    back(0);
    fout << ans << '\n';
    fin.close();
    fout.close();
    return 0;
}