Pagini recente » Cod sursa (job #477975) | Cod sursa (job #1525352) | Cod sursa (job #1111932) | Cod sursa (job #2762136) | Cod sursa (job #3164650)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n;
vector<int> arr,pnt_arr;
vector<int> ans;
bool firstTime = true;
int indx;
void solve(){
for(int i = 1; i < pnt_arr.size(); i++){
int ind = i;
for(int j = 0; j < i; j++){
if(abs(pnt_arr[i] - pnt_arr[j]) == ind)
return;
ind--;
}
}
if(firstTime){
firstTime=!firstTime;
ans = pnt_arr;
}
indx++;
return;
}
bool verify(){
for(int i = 0; i < pnt_arr.size() - 1; i++)
if(pnt_arr[i] == pnt_arr[pnt_arr.size() - 1])
return false;
return true;
}
void combine(){
int mem = 0;
bool ok;
bool end_task = false;
pnt_arr.push_back(0);
while (mem>=0){
ok = true;
while(ok && pnt_arr[mem] < n){
pnt_arr[mem] += 1;
if(verify()){
ok = false;
}
}
if(!ok){
if(pnt_arr.size() == n){
solve();
}
else{
pnt_arr.push_back(0);
mem+=1;
}
}
else{
pnt_arr.pop_back();
mem-=1;
}
}
return;
}
int main()
{
fin>>n;
for(int i = 1; i <= n; i++)
arr.push_back(i);
combine();
for(int i : ans)
fout<<i<<' ';
fout<<'\n'<<indx;
return 0;
}