Pagini recente » Cod sursa (job #799386) | Cod sursa (job #2253435) | Cod sursa (job #70986) | Cod sursa (job #2929404) | Cod sursa (job #109508)
Cod sursa(job #109508)
#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;
}