Pagini recente » Cod sursa (job #645500) | Cod sursa (job #346606) | Cod sursa (job #425471) | Cod sursa (job #2094926) | Cod sursa (job #109501)
Cod sursa(job #109501)
#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);
}
}
void 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);
}
}