Cod sursa(job #1458271)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 7 iulie 2015 11:28:23
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
#include <unordered_set>
using namespace std;
 
constexpr int maxn = 14;
ifstream f("damesah.in");
ofstream g("damesah.out");
bool col[maxn], diag_princ[2*maxn], diag_sec[2*maxn];
int v[maxn];
int num_sol=0, i = 0, sz;
 
void back(){
    if(i == sz){
        ++num_sol;
        if(num_sol == 1){
	    for(int i = 0; i < sz; ++i){
                g << (v[i]+1) << ' '; }
            g << '\n'; } }
    else{
        for(int j = 0; j < sz; ++j){
            int pdp = j - i + sz,
                pds = j + i;
            if((!col[j]) && (!diag_princ[pdp]) && (
                !diag_sec[pds])){
                col[j] = true;
                diag_princ[pdp] = true;
                diag_sec[pds] = true;
		v[i] = j;
                ++i;
                back();
                --i;
                col[j] = false;
                diag_princ[pdp] = false;
                diag_sec[pds] = false; } } } }
 
int main(){
    f >> sz;
    back();
    g << num_sol;
    return 0; }