Cod sursa(job #109508)

Utilizator flesteafFlestea Florin flesteaf Data 25 noiembrie 2007 11:31:26
Problema NKPerm Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 11-12 Marime 0.7 kb
#include <fstream.h>
int s[100],d[100],n,k,t,o[20],g,u;
char a;

void afisare()
{++g; int j;
 if(a=='A') if(g==u) for(j=1;j<=n*k;++j) f<<s[j]<<" ";
 else {for(j=1;j<=n*k;++j) if(s[j]!=d[j]) break;
       if(n*k+1==j) f<<g;}
}

int ok(int i)
{int j;
 if(s[i]==s[i-1]) return 0;
 for(j=1;j<=n;++j) if(o[j]>k) return 0;
 return 1;
}

void back(int i)
{int j;
 for(j=1;j<=n;++j)
     {s[i]=j;
      o[j]++;
      if(ok(i)) if(i==n*k) afisare();
		   else back(i+1);
     }
}

int main()
{int i;
 ifstream f("nkperm.in");
 ofstream g("nkperm.out");
 f>>n>>k>>t;
 for(i=1;i<=t;++i)
    {f>>a;
     if(a=='A') for(j=1;j<=n*k;++j) f>>d[j];
	else f>>u;
     back(1);
    }
 return 0;
}