Advertisement
Guest User

Untitled

a guest
Oct 19th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <vector>
  5. #include <cmath>
  6. #include <algorithm>
  7. #include <queue>
  8. #include <iomanip>
  9. #include <string>
  10. #include <map>
  11. #include <stack>
  12. #include <deque>
  13. #include <unordered_set>
  14. #include <unordered_map>
  15. #include <set>
  16. #define all(x) x.begin(), x.end()
  17. #define trutruf first
  18. #define rtururs second
  19. #define pll pair <ll,ll>
  20. #define pii pair <int,int>
  21.  
  22. using namespace std;
  23.  
  24. typedef long long ll;
  25. typedef long double ld;
  26. typedef unsigned long long ull;
  27.  
  28. using namespace std;
  29.  
  30. long long n, k, p;
  31. vector <vector <ll>> rez;
  32.  
  33. void cnt()
  34. {
  35.     int i = 0;
  36.     while (i < k)
  37.     {
  38.         int j = 1;
  39.         while (!(rez[i][j - 1] == 0 && rez[i][j] == 0) && j <= k + 1)
  40.         {
  41.             rez[i + 1][j] = rez[i][j - 1] + rez[i][j];
  42.             j++;
  43.         }
  44.         i++;
  45.     }
  46. }
  47.  
  48. int main()
  49. {
  50.     freopen("input.txt", "r", stdin);
  51.     freopen("output.txt", "w", stdout);
  52.     //cout << fixed << setprecision(20);
  53.     ios_base::sync_with_stdio(0);
  54.     cin.tie(0);
  55.     cin >> k >> n >> p;
  56.     rez.resize(k + 1);
  57.     for (int i = 0; i < k + 1; i++)
  58.     {
  59.         rez[i].resize(k + 5);
  60.         rez[i][0] = 0;
  61.     }
  62.     rez[0][1] = 1;
  63.     cnt();
  64.     for (int i = 0; i < k + 1; i++)
  65.     {
  66.         for (int ii = 0; ii < k + 1; ii++)
  67.         {
  68.             cout << rez[i][ii] << " ";
  69.         }
  70.         cout << "\n";
  71.     }
  72.     int last = 0;
  73.     for (int i = 1; i <= n; i++)
  74.     {
  75.         for (int ii =last + 1; ii <= k; ii++)
  76.         {
  77.             if (p <= rez[k - ii + 1][n - i + 1])
  78.             {
  79.                 cout << ii << " ";
  80.                 last = ii;
  81.                 break;
  82.             }
  83.             else
  84.             {
  85.                 p -= rez[k - ii][n - i];
  86.             }
  87.         }
  88.     }
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement