Cod sursa(job #2823845)

Utilizator francescom_481francesco martinut francescom_481 Data 29 decembrie 2021 21:40:56
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.38 kb
#include <bits/stdc++.h>
#define DAU ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define PLEC return 0;

using namespace std;

ifstream fin("damesah.in");
ofstream fout("damesah.out");
#define cin fin
#define cout fout

#define N 15
int n, st[N], f[N], d1[2*N], d2[2*N], ok, sol;

int mod(int x)
{
    if(x < 0)return -x;
    else return x;
}
void afis()
{
    if(sol == 0)
    {
        for(int i = 1 ; i <= n ; i++)
        {
            cout << st[i] << " ";
        }
        cout << '\n';
    }
    sol++;
}
bool valid(int k)
{
    for(int i = 1 ; i < k ; i++)
    {
        if(k-i == mod(st[k]-st[i]))return false;
    }
    return true;
}
void bkt(int k)
{
    if(k > n)
    {
        if(sol == 0)
        {
            for(int i = 1 ; i <= n ; i++)
            {
                cout << st[i] << " ";
            }
            cout << '\n';
        }
        sol++;
        return ;
    }
    for(int i = 1 ; i <= n ; i++)
    {
        int v = k+i, w = n+k-i;
        if(f[i] == 0  &&  d1[v] == 0  &&  d2[w] == 0)
        {
            d1[v] = 1;
            d2[w] = 1;
            f[i] = 1;
            st[k] = i;
            bkt(k+1);
            f[i] = 0;
            d1[v] = 0;
            d2[w] = 0;
        }
    }
}

int main()
{
    DAU
    cin >> n;
    bkt(1);
    cout << sol;
    PLEC
}