Pagini recente » Cod sursa (job #653847) | Cod sursa (job #2604543) | Cod sursa (job #2837898) | cel_mai_mare_olimpicar_2019_oni2011_zi1 | Cod sursa (job #109879)
Cod sursa(job #109879)
#include <stdio.h>
int n, k, T, f[32], a[32], pos, used[32];
int main()
{
freopen("nkperm.in", "r", stdin);
freopen("nkperm.out", "w", stdout);
scanf("%d%d%d", &n, &k, &T);
f[0] = f[1] = 1;
for (int i = 2; i <= n; ++i)
f[i] = f[i - 1] * i;
for (int t = 1; t <= T; ++t) {
char ch;
scanf(" %c ", &ch);
if (ch == 'A') {
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
int pos = 1;
for (int i = 1; i <= n; ++i) {
int aux = a[i];
for (int j = 1; j < i; ++j)
if (a[j] < a[i])
--aux;
pos += (aux - 1) * f[n - i];
}
printf("%d\n", pos);
} else {
scanf("%d", &pos);
for (int i = 1; i <= n; ++i)
used[i] = 0;
for (int i = 1; i <= n; ++i) {
int aux = (pos - 1) / f[n - i] + 1;
pos -= (aux - 1) * f[n - i];
int crt = 1;
for (; aux; ++crt)
if (!used[crt])
--aux;
printf("%d ", crt - 1);
used[crt - 1] = 1;
}
printf("\n");
}
}
return 0;
}