Cod sursa(job #146865)

Utilizator vlad_olteanVladimir Oltean vlad_oltean Data 2 martie 2008 12:25:35
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
using namespace std;

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

int p[100],n;
int i,j,k;

int afis()
{   for(i=1;i<=n;i++)
         fout<<p[i]<<' ';
    fout<<endl;
}

int next()
{   int aux;

    for(i=n-1;i&&p[i]>p[i+1];i--);
    if(!i) return 0;  // Nu mai exista succesor
    else
    {    for(j=n;p[j]<p[i];j--);  // Afla cel mai mic element mai mare decat p[i]
         aux=p[j], p[j]=p[i], p[i]=aux;  // p[i] se interschimba cu p[j]
         for(j=i+1, k=n ; j<k; j++,k--)  // inverseaza elementele de la i+1 la n
              aux=p[j], p[j]=p[k], p[k]=aux;
         afis();
         next();
    }
}
         
int main()
{    fin>>n;
     for(i=1;i<=n;i++)
          p[i]=i;
     afis();
     next();
     return 0;
}