Cod sursa(job #1607545)

Utilizator Balescu_OvidiuBalescu Ovidiu-Gheorghe Balescu_Ovidiu Data 21 februarie 2016 12:51:27
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>

short n,v[9];

int main(){
	FILE*f=fopen("permutari.in","r");
	fscanf(f,"%hd",&n);
	fclose(f);
	FILE*g=fopen("permutari.out","w");
	for(short i=0;i<n;i++){
		v[i]=i+1;
		fprintf(g,"%hd ",v[i]);
	}
	fprintf(g,"\n");
	short fact=1;
	for(short i=2;i<=n;i++)
		fact*=i;
	while(--fact){
		short I=0,J=0;
		for(short i=n-1;i>0;i--)
			if(v[i]>v[i-1]){
				I=i-1;
				break;
			}
		for(short j=n-1;j>I;j--)
			if(v[I]<v[j]){
				J=j;
				break;
			}
		short man=v[J];
		v[J]=v[I];
		v[I]=man;
		I++; J=n-1;
		while(I<J){
			man=v[J];
			v[J]=v[I];
			v[I]=man;
			J--;
			I++;
		}
		for(short i=0;i<n;i++)
			fprintf(g,"%hd ",v[i]);
		fprintf(g,"\n");
	}
	fclose(g);
    return 0;
}