Pagini recente » Cod sursa (job #1370351) | Cod sursa (job #507515) | Cod sursa (job #1369458) | Cod sursa (job #3248539) | Cod sursa (job #2048939)
#include <fstream>
#define DIM 32
#define INF (1<<63)
using namespace std;
ifstream f("planeta.in");
ofstream g("planeta.out");
int n, k, OK = 1, sol[DIM], viz[DIM];
long long fact[DIM], sum;
void genFact(){
fact[0] = 1;
for(int i = 1; i <= 19; ++ i){
fact[i] = i * fact[i - 1];
}
}
void afis(){
for(int i = 1; i <= n; ++ i)
g<<sol[i]<<" ";
}
void back(int niv){
if(niv > n){
afis();
OK = 0;
}
for(int i = 1; i <= n; ++ i){
if(viz[i] == 0){
if(sum + fact[n - niv] >= k){
viz[i] = 1;
sol[niv] = i;
back(niv + 1);
if(!OK) return;
}
else
sum += fact[n - niv];
}
}
}
int main()
{
f>>n>>k;
genFact();
sum = 0;
back(1);
return 0;
}