Cod sursa(job #374349)

Utilizator avram_florinavram florin constantin avram_florin Data 16 decembrie 2009 20:01:57
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
using namespace std;
int n,i,j,poz,min,k,aux,v[20];
int main ()
{
	freopen("permutari.in" , "r" , stdin );
	freopen("permutari.out", "w" , stdout);
	scanf("%d" , &n);
	for(i=1;i<=n;i++)
		v[i]=i;
	for(i=1;i<n;i++)
		printf("%d ", v[i]);
	printf("%d\n" , v[n] );
	do
	{
		poz=n;
		while(v[poz]<v[poz-1]&&poz>=1)
				poz--;
		poz--;
		if(poz)
			{
				min=v[poz+1];
				j=poz+1;
				for(i=poz+1 ; i<=n ; i++)
					if(min>v[i]&&v[i]>v[poz])
						min=v[i],j=i;
				aux=v[poz],v[poz]=v[j],v[j]=aux;
				for(i=1;i<=(n-poz)/2;i++)
					aux=v[poz+i],v[poz+i]=v[n-i+1],v[n-i+1]=aux;
				for(i=1;i<n;i++)
					printf("%d " , v[i]);
				printf("%d\n" , v[n]);
			}
	}
	while(poz);
	return 0;
}