blob: 2b6fb10279b8c56fa08a76bf907971d579f98bbd (
plain)
1
2
3
4
5
6
7
8
|
int perm[MAXN]; //perm[i] = j in Zeile 10
void genPerm(int n){
ull mask = ~0ull << (__lg(n) - 1);
for (int i = 0, j = 0; i < n; i++) {
perm[i] = j; //if (i < j) swap(a[i], a[j]);
ull y = mask >> __builtin_ctz(~i);
j ^= y & (n - 1);
}}
|