Cod sursa(job #2048939)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 26 octombrie 2017 18:37:15
Problema Planeta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#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;
}