Cod sursa(job #3367407)

Utilizator Stefanstef99Stefan Puica Stefanstef99 Data 7 octombrie 2026 16:43:03
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, st[20], cnt;
bool ap[20];
bool dp[40], ds[40];

/**
n,1 -> 1
n - 1, 1 -> 2
n - 2, 1 -> 3
.
.
.
i, j -> n - i + j
col - lin + n

1,1 -> 1
1,2 -> 2
1,3 -> 3
.
.
.
1,n -> n
2,n -> n + 1
i, j -> i + j - 1
*/

void Back(int top)
{
    if(top == n + 1)
    {
        cnt++;
        if(cnt == 1)
        {
            for(int i = 1; i <= n; i++)
                fout << st[i] << " ";
            fout << '\n';
        }
    }
    else for(int i = 1; i <= n; i++)
        if(ap[i] == 0 && dp[n - top + i] == 0 && ds[i + top - 1] == 0)
        {
            st[top] = i;
            ap[i] = 1;
            dp[n - top + i] = 1;
            ds[i + top - 1] = 1;
            Back(top + 1);
            ap[i] = 0;
            dp[n - top + i] = 0;
            ds[i + top - 1] = 0;
        }
}

int main()
{
    fin >> n;
    Back(1);
    fout << cnt << '\n';
    return 0;
}