Advertisement
Nik_Perepelov

13 Соне

Dec 15th, 2021
1,143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. //3
  2.  
  3. #include <iostream>
  4. #include <vector>
  5. using namespace std;
  6.  
  7.  
  8. int n, m, k;
  9. vector<bool> v;
  10. vector<int> ans;
  11.  
  12. void calculate(int &a, int &b){
  13.     a--;
  14.     b--;
  15. }
  16.  
  17. void dosmth(int b, int local_pos, int i){
  18.     while (b > 0) {
  19.         if (!v[local_pos]) { b-=1; }
  20.         local_pos++;
  21.     }
  22.     v[local_pos - 1] = true;
  23.     ans[i] = local_pos;
  24. }
  25.  
  26. void genit() {
  27.  
  28.     int res, pp,b;
  29.     int mm = m - 1, nn = n - 1, kk = k - 1;
  30.     for (int i = 0; i < k; i++) {
  31.         res = 1, pp = 0;
  32.         for (int localN = nn; localN > nn - kk; localN--) { res *= localN; }
  33.         b = mm / res + 1;
  34.         mm = mm - (b - 1) * res;
  35.         calculate(nn, kk);
  36.         dosmth(b, pp, i);
  37.     }
  38.  
  39.     for (auto &i : ans)
  40.         cout << i << ' ';
  41. }
  42.  
  43.  
  44. int main() {
  45.     cin >> n >> k >> m;
  46.  
  47.     v = vector<bool>(n);
  48.     ans = vector<int>(k);
  49.  
  50.     genit();
  51.  
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement