Cod sursa(job #280950)

Utilizator sticksuTihu Mircea sticksu Data 13 martie 2009 18:01:54
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream.h>

ifstream f("permutari.in");
ofstream g("permutari.out");

unsigned long st[100000];
unsigned long n;

unsigned long succesor(unsigned long k)
{if(st[k]<n)
    {st[k]++; return 1;}
 else return 0;
}

unsigned long valid(unsigned long k)
{unsigned long i;
 for(i=1;i<k;i++)
    if(k!=1&&st[k]<=st[k-1]) return 0;
 return 1;
}

unsigned long tiparire(unsigned long k)
{unsigned long i;
 for(i=1;i<=k;i++)
     g<<st[i]<<' ';
 g<<"\n";
 return 0;
}

int main()
{f>>n;
 unsigned long k=1;
 st[k]=0;
 unsigned long as,ev;
 while(k)
   {do{as=succesor(k);
       if(as) ev=valid(k);
      }while(as&&!ev);
    if(as)
       if(k==n) tiparire(k);
       else {k++; st[k]=0;}
    else k--;
   }
 f.close();
 g.close();
 return 0;
}