Cod sursa(job #1213202)

Utilizator mariusn01Marius Nicoli mariusn01 Data 27 iulie 2014 15:51:11
Problema Problema Damelor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <bitset>
#define DIM 14

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

int x[DIM], y[DIM];
bitset<2*DIM> C, P, S;

int n, sol;

void back(int k) {
    if (k>n) {
        sol++;
        if (sol == 1) {
            for (int i=1;i<=n;i++)
                fout<<x[i]<<" ";
        }
        return;
    }

    for (int i=1;i<=n;i++) {
        x[k] = i;
        if (C[i] == 0 && P[(i<=k) ? k-i : n+(i-k)] == 0
            && S[k+i<=n+1 ? n+1-(k+i) : n+1 + (k+i)] == 0) {
            C[i] = 1;
            P[(i<=k) ? k-i : n+(i-k)] = 1;
            S[k+i<=n+1 ? n+1-(k+i) : n+1 + (k+i)] = 1;
            back(k+1);
            C[i] = 0;
            P[(i<=k) ? k-i : n+(i-k)] = 0;
            S[k+i<=n+1 ? n+1-(k+i) : n+1 + (k+i)] = 0;


        }
    }

}

int main() {
    fin>>n;

    back(1);
    fout<<"\n"<<sol;
    return 0;
}