Cod sursa(job #3237736)

Utilizator tsg38Tsg Tsg tsg38 Data 12 iulie 2024 14:24:11
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAXN = 13;

bool okL[MAXN], okC[MAXN], okDp[2 * MAXN - 1], okDs[2 * MAXN - 1];
int res;

int dame[MAXN];

int verify( int l, int c, int n ) {
  if ( okL[l] == 0 && okC[c] == 0 && okDp[n - l + c - 1] == 0 && okDs[l + c] == 0 ) {
    return 1; 	                                                     
  }
  return 0;
}

void bkt( int l, int n ) {
  if ( l == n ) {
    if ( res == 0 ) {
	  for ( int i = 0; i < n; ++i ) {
	    fout << dame[i] + 1 << " ";
	  }
	  fout << "\n";
	}
	++res;
  } else {
    for ( int c = 0; c < n; ++c ) {
	  if ( verify(l, c, n) ) {
	    dame[l] = c;
	    okL[l] = okC[c] = okDp[n - l + c - 1] = okDs[l + c] = true; 
        bkt(l + 1, n);
	    okL[l] = okC[c] = okDp[n - l + c - 1] = okDs[l + c] = false;
	  }
	}
  }
}

int main() {
  ios_base::sync_with_stdio(0);
  fin.tie(0);
  int n;
  
  fin >> n;
  bkt(0, n);
  fout << res;
  fin.close();
  fout.close();
  return 0;
}