Pagini recente » Cod sursa (job #2618879) | Cod sursa (job #548979) | Cod sursa (job #1999085) | Cod sursa (job #1087016) | Cod sursa (job #3150963)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sirdesc.in");
ofstream fout("sirdesc.out");
const int ARRMAX = 7;
int n, m, k, d, nr_perm, itr = 1;
bool frq[45];
int arr[ARRMAX], perm[45];
inline void backtracking(int step)
{
//if(itr == m + 1)
//exit(0);
if(step == k + 1)
{
nr_perm++;
if(nr_perm == arr[itr])
{
itr++;
for(int i = k; i >= 1; -- i)
{
fout << perm[i] << ' ';
}
fout << '\n';
}
}
else
{
for(int i = 1; i <= n; ++ i)
{
if(!frq[i])
{
if(step == 1)
{
frq[i] = 1;
perm[step] = i;
backtracking(step + 1);
frq[i] = 0;
}
if(i - perm[step - 1] >= d)
{
frq[i] = 1;
perm[step] = i;
backtracking(step + 1);
frq[i] = 0;
}
}
}
}
}
int main()
{
fin >> n >> k >> d >> m;
for(int i = 1; i <= m; ++ i)
{
fin >> arr[i];
}
backtracking(1);
}