Cod sursa(job #2796880)

Utilizator StefanL2005Stefan Leustean StefanL2005 Data 8 noiembrie 2021 22:09:09
Problema Problema Damelor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");

void solve(int n, int &nr, int y, vector<int> aleg, vector<int> amvazut, vector<int> verif){
    if (y == n){
        nr++;
        if (nr == 1){
            for (int i = 0; i < n; i++)
                out<< aleg[i] << " ";
            out<< "\n";
        }
    }
    else{
        for (int i = 1; i <= n; i++){
            bool ok = 0;

            aleg[y] = i;
            amvazut[aleg[y]]++;
            verif[y] = abs(y + 1 - i);
            if (amvazut[aleg[y]] <= 1){
                for (int i = 0; i < y; i++)
                    if (verif[y] == verif[i])
                        ok = 1;
                if (ok == 0)
                    solve(n, nr, y + 1, aleg, amvazut, verif);
            }
            amvazut[aleg[y]] -= 1;
        }
    }
}
int main()
{
    int n, y = 0, nr = 0;

    in>> n;
    vector<int> amvazut(n + 1, 0), aleg(n, 0), verif(n, 0);

    solve(n, nr, y, aleg, amvazut, verif);
    out<< nr;
    return 0;
}