| 1 | vector<int> nth_permutation(int cnt, int n) { |
| 2 | vector<int> idx(cnt), per(cnt), fac(cnt); |
| 3 | rep(i,0,cnt) idx[i] = i; |
| 4 | rep(i,1,cnt+1) fac[i - 1] = n % i, n /= i; |
| 5 | for (int i = cnt - 1; i >= 0; i--) |
| 6 | per[cnt - i - 1] = idx[fac[i]], |
| 7 | idx.erase(idx.begin() + fac[i]); |
| 8 | return per; } |
| 9 | // vim: cc=60 ts=2 sts=2 sw=2: |