Cod sursa(job #1499050)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 10 octombrie 2015 02:06:25
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>

using namespace std;

int v[10];
int v1[10];

int main()
{
    freopen("permutari.in","r",stdin);
    freopen("permutari.out","w",stdout);
    int n,k,r=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) v[i]=1;
    v1[0]=-2;
    k=1;
    while(k>0)
        if(k<=n)
        {
            v[v1[k]]=1;
            if(v1[k]==v1[k-1]+1) r--;
            v1[k]++;
            while(v1[k]<=n && v[v1[k]]==0) v1[k]++;
            if(v1[k]<=n)
            {
                v[v1[k]]=0;
                if(v1[k]==v1[k-1]+1) r++;
                if(r+n-k>=0) k++;
            }
            else
            {
                v1[k]=0;
                k--;
            }
        }
        else
        {
            for(int i=1;i<=n;i++) printf("%d ",v1[i]);
            printf("\n");
            k--;
        }
    return 0;
}