Cod sursa(job #1753586)

Utilizator bogdanluncasubogdan bogdanluncasu Data 6 septembrie 2016 18:51:12
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
using namespace std;
int *a,n;
void show(){
    for(int i=0;i<n;i++){
      printf("%d ",a[i]);
	}
    printf("\n");
}

void swap(int i,int j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
bool solve(){
    int i=n-1,j=n-1;
    while (i>0&&a[i-1]>=a[i])
        i--;
    if (i<=0)
        return false;
        
    while(a[j]<=a[i-1])
        j--;
    swap(i-1,j);
    j=n-1;
    while (i < j) {
        swap(i,j);
        i++;
        j--;
    }
    show();
    return true;
}
int main(){
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);
    scanf("%d",&n);
    a=(int*)malloc(sizeof(int*)*100000);
    for(int i=0;i<n;i++){
        a[i]=i+1;
    }
    show();
    while(solve());
}