Advertisement
kokokozhina

fuck you you fucking fuck

Mar 5th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <string>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <set>
  9. #include <map>
  10.  
  11. #define forn(i, n) for (int i = 0; i < int(n); i++)
  12. #define fore(i, l, r) for (int i = int(l); i < int(r); i++)
  13. #define all(a) a.begin(), a.end()
  14. #define mp make_pair
  15. #define pb(a) push_back(a)
  16.  
  17. using namespace std;
  18.  
  19. typedef long long ll;
  20. typedef pair<int, int> pii;
  21.  
  22. //484, Возведите заданную перестановку p в степень k.
  23.  
  24. void takeDegree(int m, vector<int> &p, int n)
  25. {
  26.     vector<bool> used(p.size());
  27.     vector<vector<int>> result;
  28.     fore(i, 0, p.size())
  29.     {
  30.         if (!used[i])
  31.         {
  32.             vector<int> worker;
  33.             int j = i;
  34.             while(!used[j])
  35.             {
  36.                 used[j] = true;
  37.                 worker.push_back(p[j]);
  38.                 j = p[j];
  39.             }
  40.             result.push_back(worker);
  41.         }
  42.     }
  43.     vector<int> ans(n, -1);
  44.     fore(i, 0, result.size())
  45.     {
  46.         fore(j, 0, result[i].size())
  47.         {
  48.             ans[result[i][j]] = result[i][(j + m) % result[i].size()];
  49.         }
  50.     }
  51.     fore(i, 0, n)
  52.         printf("%d ", ans[i]);
  53. }
  54.  
  55.  
  56. int main()
  57. {
  58. #ifdef _DEBUG
  59.     freopen("input.txt", "r", stdin);
  60.     freopen("output.txt", "w", stdout);
  61. #endif
  62.  
  63.     int n, k;
  64.     scanf("%d%d", &n, &k);
  65.     vector<int> v(n);
  66.     forn(i, n)
  67.     {
  68.         int cur;
  69.         scanf("%d", &cur);
  70.         v[i] = cur;
  71.     }
  72.     takeDegree(k, v, n);
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement