Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //3
- #include <iostream>
- #include <vector>
- using namespace std;
- int n, m, k;
- vector<bool> v;
- vector<int> ans;
- void calculate(int &a, int &b){
- a--;
- b--;
- }
- void dosmth(int b, int local_pos, int i){
- while (b > 0) {
- if (!v[local_pos]) { b-=1; }
- local_pos++;
- }
- v[local_pos - 1] = true;
- ans[i] = local_pos;
- }
- void genit() {
- int res, pp,b;
- int mm = m - 1, nn = n - 1, kk = k - 1;
- for (int i = 0; i < k; i++) {
- res = 1, pp = 0;
- for (int localN = nn; localN > nn - kk; localN--) { res *= localN; }
- b = mm / res + 1;
- mm = mm - (b - 1) * res;
- calculate(nn, kk);
- dosmth(b, pp, i);
- }
- for (auto &i : ans)
- cout << i << ' ';
- }
- int main() {
- cin >> n >> k >> m;
- v = vector<bool>(n);
- ans = vector<int>(k);
- genit();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement