Pagini recente » Cod sursa (job #1357506) | Cod sursa (job #512679) | Cod sursa (job #1078684) | Cod sursa (job #98172) | Cod sursa (job #109478)
Cod sursa(job #109478)
#include <fstream.h>
#define NMAX 20000
ofstream g("nkperm.out");
int a[NMAX][101],n,ka,ind=1,v[101];
int comp(int x[],int y[])
{ int i;
for (i=1;i<=n*ka;i++)
if (x[i]!=y[i]) return 0;
return 1;
}
void afisare(int x)
{ int i;
for (i=1;i<=n*ka;i++)
g<<a[x][i]<<' ';
g<<'\n';
}
int verif(int k)
{ int nr=0,i;
if (k==1) return 1;
if (v[k]==v[k-1]) return 0;
for (i=1;i<=k;i++)
if (v[i]==v[k]) nr++;
if (nr>ka) return 0;
return 1;
}
void back(int k)
{ int i;
if (k>n*ka) { for (i=1;i<=ka*n;i++) a[ind][i]=v[i];
ind++;
return;
}
for (i=1;i<=n;i++)
{ v[k]=i;
if (verif(k))
back(k+1);
}
}
int main()
{ int t,i,d[101],sw,j,k;
long long y;
char x;
ifstream f("nkperm.in");
f>>n>>ka>>t;
back(1);
for(k=1;k<=t;k++)
{ f>>x;
if (x=='A')
{ for (j=1;j<=n*ka;j++)
f>>d[j];
sw=0;
i=0;
while (sw==0)
{ i++;
if (comp(d,a[i])) sw=1;
}
g<<i<<'\n';
}
if (x=='B')
{ f>>y;
afisare(y);
}
}
return 0;
}