Pagini recente » Istoria paginii runda/sim2 | Monitorul de evaluare | Monitorul de evaluare | Istoria paginii runda/iconcurs12 | Cod sursa (job #109969)
Cod sursa(job #109969)
#include <cstdio>
#include <cstring>
long st[100];
long nr[100];
long rasp[14000][100];
long h,n,k,T;
void back(long i) {
if ( i==n*k ) {
for (long j=1; j<=n; ++j)
if ( nr[j]!=k )
return;
memcpy(rasp[h++], st, sizeof(long)*n*k);
return ;
}
for (st[i]=1; st[i]<=n; ++st[i])
if ( st[i]!=st[i-1] ) {
nr[st[i]]++;
back(i+1);
nr[st[i]]--;
}
}
int main() {
freopen("nkperm.in", "r", stdin);
freopen("nkperm.out","w", stdout);
scanf("%ld %ld %ld\n", &n, &k, &T);
back(0);
while ( T-- ) {
char c;
scanf("%c", &c);
if ( c=='B' ) {
long x;
scanf("%ld\n", &x);
--x;
printf("%ld", rasp[x][0]);
for (long i=1; i<n*k; ++i)
printf(" %ld",rasp[x][i]);
printf("\n");
} else {
long test[100];
for (long i=0; i<n*k; ++i)
scanf("%ld", test+i);
scanf("\n");
for (long i=0; i<h; ++i) {
long ok=1;
for (long j=0; ok && j<n*k; ++j)
if ( rasp[i][j]!=test[j] )
ok = 0;
if ( ok ) {
printf("%ld\n", i+1);
i=h;
}
}
}
}
fclose(stdout);
fclose(stdin);
return 0;
}