Cod sursa(job #1439187)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 21 mai 2015 18:59:04
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
#include <algorithm>

using namespace std;

int a[10], i, is, id, n, nr;
int p, poz, mn, poz2;

ifstream fin("permutari.in");
ofstream fout("permutari.out");

void afisare ()
{
    int i;
    for (i = 1; i <= n; i++)
        fout << a[i] << ' ';
    fout << '\n';
}

int main ()
{
    fin >> n;
    p=1;
    for (i = 1; i <= n; i++)
    {
        p*=i;
        a[i] = i;
    }
    afisare();
    nr=1;
    while (nr<p)
    {
        nr++;
        for (i=n; i>=2; i--)
        {
            if (a[i]>a[i-1])
            {
                poz=i-1;
                break;
            }
        }
        mn=n;
        for (i=n; i>poz; i--)
        {
            if (a[i]>a[poz] && mn>=a[i])
            {
                mn=a[i];
                poz2=i;
            }
        }
        if (poz!=1)
        {
            swap(a[poz], a[poz2]);
            sort(a+poz+1, a+n+1);
            afisare();
        }
        else
        {
            a[1]++;
            for (i=2; i<=n; i++)
              if (a[1]>=i)
                a[i]=i-1;
              else
                a[i]=i;
            afisare();
        }
    }
    fin.close();
    fout.close();
    return 0;
}