Cod sursa(job #429025)

Utilizator mariacMaria Constantin mariac Data 29 martie 2010 19:42:21
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
int s[100],n;
long nr;
void init(int k)
     {s[k]=0;}
int succesor(int k)
    {if(s[k]<n){s[k]++;
                 return 1;}
     return 0;}
int valid(int k)
    {int ok=0;
     int ok1=1;
     for(int i=1;i<k;i++)
          {if(s[k]==s[i])ok1=0;
           if(s[i]>k)ok=1;}
     if(ok1==1){if(ok==1||k==n||s[k]>k)return 1;
                 return 2;}
    if(ok==0&&k!=n&&s[k]<=k)return 2;
    return 0;}
void begin(int k)
   {init(k);
    while(succesor(k)){if(valid(k)==1){if(k==n){nr++;
                                                if(nr==997)nr=0;
                                                }


                                        else begin(k+1);


                                        }
                        else if(valid(k)==2)s[k]=k;
                    }

  }

int main()
{fin>>n;
nr=0;
init(1);
begin(1);
fout<<nr;
return 0;
}