Cod sursa(job #2870932)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 12 martie 2022 18:38:05
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")

using namespace std;

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

const int MAX_N = 30;
int f[MAX_N], p[MAX_N];
int n, config, found, check;

int _abs(int k){
    return (k < 0 ? -k : k);
}

void dame(int k){
    if(k > n){
        if(!found){
            found = 1;
            for(int i=1; i<=n; i++)
                fout<<p[i]<<" ";
        }
        config++;
        return;
    }

    for(int i=1; i<=n; i++)
        if(!f[i]){
            check = true;
            for(int j=1; j < k; j++)
                if(_abs(i - p[j]) == k - j){
                    check = false;
                    break;
                }
            if(check){
                f[i] = 1;
                p[k] = i;
                dame(k+1);
                f[i] = 0;
            }
        }
}

int main (){
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);

    fin>>n;
    dame(1);
    fout<<"\n"<<config;
    return 0;
}