Cod sursa(job #345675)

Utilizator alexandru92alexandru alexandru92 Data 4 septembrie 2009 09:24:46
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
/* 
 * File:   main.cpp
 * Author: speedemon
 *
 * Created on September 3, 2009, 1:07 PM
 */

#include <stdio.h>
#include <stdlib.h>

/*
 * 
 */
int main(int argc, char** argv)
{int *v;
int n,i,j,k;
bool ok=true;
    freopen("permutari.in","rt",stdin);
    freopen("permutari.out","wt",stdout);
    scanf("%d",&n);
    v=(int*)calloc(n,sizeof(n));
    for( i=0; i<n; ++i ) v[i]=i+1,printf("%d ",v[i]);
    do
    {
        for( i=n-2; ( i >= 0 ) && ( v[i] > v[i+1] ); --i );
        if( i < 0 ) return EXIT_SUCCESS;
        for( j=n-1;  v[i] > v[j] ; --j );
        v[i]+=v[j]; v[j]=v[i]-v[j]; v[i]-=v[j];
        for( k=0,j=i+1; j < ( n-i )/2+1; ++j,++k )
        {
            v[j]+=v[n-k-1];  
            v[n-k-1]=v[j]-v[n-k-1];
            v[j]-=v[n-k-1];
        }
        printf("\n");
        for( i=0; i<n; ++i ) printf("%d ",v[i]);
    }while( ok ); 
    return EXIT_SUCCESS;
}