Cod sursa(job #3302639)

Utilizator InformaticianInDevenire1Munteanu Mihnea Gabriel InformaticianInDevenire1 Data 9 iulie 2025 17:01:24
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

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

int c[22];
int dp[22],ds[22]; // diagonala principala; diagonala secundara
vector <int> ans,sol;
int nrsol = 0;

void Back_Tracking(int n,int row){
    if (sol.empty()){
        for (int i=1;i<=n+2;++i) sol.push_back(0);
    }
    if (row==n+1){
        nrsol++;
        if (ans.empty()){
            ans = sol;
        }
        return;
    }
    for (int col=1;col<=n;++col){
        if (c[col]==0 and dp[row-col+n]==0 and ds[row+col-1]==0){
            sol[row] = col;
            c[col] = 1;
            dp[row-col+n] = 1;
            ds[row+col-1] = 1;
            Back_Tracking(n,row+1);
            c[col] = 0;
            dp[row-col+n] = 0;
            ds[row+col-1] = 0;
        }
    }
}

int main()
{
    int n;
    fin >> n;
    Back_Tracking(n,1);
    for (int i=1;i<=n;++i) fout << ans[i] << ' ';
    fout << '\n';
    fout << nrsol;
    return 0;
}