Cod sursa(job #826756)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 1 decembrie 2012 10:45:31
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <vector>

int main(){
    std::ifstream fin("permutari.in");
    std::ofstream fout("permutari.out");
    unsigned short n;
    fin>>n;
    short i=0;
    std::vector<unsigned short> k(n,0);
    std::vector<bool> ink(n+1,false); ink[0]=true;
    while(i>-1){
        unsigned short j;
        for(j=k[i];j<=n&&ink[j];++j);
        if(j>n){ink[k[i]]=false; k[i]=0; i--;}
        else{
            if(k[i]!=0) ink[k[i]]=false;
            k[i]=j; ink[j]=true;
            if(i==n-1){
                for(unsigned short x=0;x<n;++x) fout<<k[x]<<' ';
                fout<<'\n';
            }
            else i++;
        }
    }
}