Cod sursa(job #2345714)

Utilizator Stefan3002Stefan Stefan3002 Data 16 februarie 2019 17:05:08
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream intrare("permutari.in");
ofstream iesire("permutari.out");

int a[100],poz,i,j,aux,minim,k,n;

int main()
{
    intrare>>n;
    for(i=1; i<=n; i++){
        a[i]=i;
        iesire<<i<<" ";
    }
iesire<<"\n";

    do
    {
        poz=n;

        while(a[poz]<a[poz-1] && poz>1)poz--;
        poz--;

        if(poz)
        {
            minim=a[poz+1];j=poz+1;
            for(i=poz+1; i<=n; i++)
                if(a[i]<minim && a[i]>a[poz])
                {
                    minim=a[i];
                    j=i;
                }
            aux=a[poz];
            a[poz]=a[j];
            a[j]=aux;

            int p=1;
            do
            {
                k=0;
                for(i=poz+1; i<=n-p; i++)
                    if(a[i]>a[i+1])
                    {
                        a[i]=a[i]^a[i+1];
                        a[i+1]=a[i+1]^a[i];
                        a[i]=a[i]^a[i+1];
                        k=1;
                    }
                p++;


            }
            while(k==1);

            for(i=1; i<=n; i++)
                iesire<<a[i]<<" ";
            iesire<<"\n";

        }



    }
    while(poz);





    return 0;
}