Cod sursa(job #1555350)

Utilizator adiXMGemene Adrian adiXM Data 22 decembrie 2015 17:49:29
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
long long fact[500],k;
int n;
bool viz[100];
int perm[100];
inline void Perm_k()
{
    for(int j=1;j<=n;++j)
        for(int i=1;i<=n;++i)
        {
            if(viz[i]==1)
                continue;
            if(k <= fact[n-j])
            {
                perm[j] = i;
                viz[i] = 1;
                break;
            }
            k -= fact[n-j];
        }
    for(int i=1;i<=n;++i)
        g<<perm[i]<<" ";
}
inline void k_Perm()
{
    k=1;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<perm[i];j++)
        {
            if(viz[j]==1)
                continue;
            k+=fact[n-i];
        }
        viz[perm[i]]=1;
    }
    g<<k;

}
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>perm[i];
    fact[0] = 1;
    for(int i=1;i<=n;i++)
        fact[i] = 1LL*fact[i-1]*i;
    k_Perm();
    return 0;
}