Cod sursa(job #3187795)

Utilizator andiRTanasescu Andrei-Rares andiR Data 30 decembrie 2023 13:46:16
Problema Problema Damelor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

#pragma GCC optimise ("O3");

using namespace std;
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");
const int Nmax=13;

string mat[Nmax];
int lin[Nmax], col[Nmax], d1[2*Nmax], d2[2*Nmax], sol, N, v[Nmax];

void bkt(int ind, int i){
    if (ind==N){
        if (sol==0){
            for (int i=0; i<N; i++)
                fout<<v[i]<<' ';
            fout<<'\n';
        }
        sol++;
        return;
    }
    if (i+N-ind>N*N)
        return;
    if (lin[i/N]==0 && col[i%N]==0 && d1[i/N-i%N+N-1]==0 && d2[i/N+i%N]==0){
        lin[i/N]=1;
        v[i/N]=i%N+1;
        col[i%N]=1;
        d1[i/N-i%N+N-1]=1; 
        d2[i/N+i%N]=1;
        bkt(ind+1, i+1);
        lin[i/N]=0; 
        col[i%N]=0;
        d1[i/N-i%N+N-1]=0; 
        d2[i/N+i%N]=0;
    }
    bkt(ind, i+1);
}

int main(){
    fin>>N;
    bkt(0, 0);
    fout<<sol;

    return 0;
}