Cod sursa(job #2506089)

Utilizator paul3ioanCirstean Paul Ioan paul3ioan Data 7 decembrie 2019 14:41:02
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.58 kb
/*#include <bits/stdc++.h>
#define pb push_back
#define optimize ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define ll long long
#define FILEIN "damesah.in"
#define FILEOUT "damesah.out"
using namespace std;
ifstream fin(FILEIN);
ofstream fout(FILEOUT);
void citire();
bool col[15];
int ans,n,s[15];
void rez();
int modul(int x)
{
	if(x<0)
		return -x;
	return x;
}
bool valid(int k)
{
	for(int i=1;i<k;i++)
		if(modul(s[k]-s[i])==k-i)
			return false;
	return true;

}
void bkt(int);
void afis();
int main()
{
	fin>>n;
	bkt(1);		
	fout<<ans;
}
void bkt(int k)
{
	if(k==n+1)
		{
			ans++;
			if(ans==1)
				afis();
		}
	else
		for(int i=1;i<=n;i++)
		{
			if(col[i]==false)
			{
				s[k]=i;
				col[i]=true;
				if(valid(k))
					bkt(k+1);
				col[i]=false;
			}
			
		}
}
void afis()
{
	for(int i=1;i<=n;i++)
		fout<<s[i]<<" ";
	fout<<'\n';
}
*/
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n,a[15],b[15],v[15],sol,ok;
int modul(int x){
    if(x<0)return -x;
    return x;
}
int verif(int k){
    for(int i=1;i<k;i++)
        if(k-i==modul(a[k]-a[i]))return 0;
    return 1;
}
void bk(int k){
    if(k==n+1){
        sol++;
        if(!ok){
            for(int i=1;i<=n;i++)
                v[i]=a[i];
            ok=1;
        }
        return;
    }
    for(int i=1;i<=n;i++)
        if(!b[i]){
            b[i]=1;
            a[k]=i;
            if(verif(k))
               bk(k+1);
            b[i]=0;
        }
}
int main(){
    fin>>n;
    bk(1);
    for(int i=1;i<=n;i++)
        fout<<v[i]<<" ";
    fout<<"\n"<<sol;
    return 0;
}