fork download
  1. #include <bits/stdc++.h> // NeOWami
  2. using namespace std;
  3.  
  4. #define ft first
  5. #define sc second
  6. const int N = 1e5 + 5;
  7. int n, a[N], b[N], k;
  8. string s;
  9. vector<int> lst[N];
  10. int vis[N];
  11. void calc() {
  12. int mid = n / 2;
  13. for (int i = 1; i <= mid; i++) b[i * 2 - 1] = a[i];
  14. if (n & 1) b[n] = a[mid + 1];
  15. for (int i = 1; i <= mid; i++) b[i * 2] = a[n - i + 1];
  16. for (int i = 1; i <= n; i++) a[b[i]] = i;
  17. }
  18. signed main() {
  19. cin.tie(NULL)->sync_with_stdio(false);
  20. if(ifstream("slom.inp")) {
  21. freopen("slom.inp", "r", stdin);
  22. freopen("slom.out", "w", stdout);
  23. }
  24. cin >> k >> s;
  25. n = s.size(); s = ' ' + s;
  26. for (int i = 1; i <= n; i++) a[i] = i;
  27. calc();
  28. for (int i = 1; i <= n; i++) if (!vis[i]) {
  29. vis[0]++;
  30. for (int u = i; !vis[u]; u = a[u]) {
  31. vis[u] = vis[0];
  32. b[u] = lst[vis[0]].size();
  33. lst[vis[0]].push_back(u);
  34. }
  35. }
  36. for (int i = 1; i <= n; i++) {
  37. int id = vis[i];
  38. int sz = lst[id].size();
  39. int pos = (b[i] + k) % sz;
  40. cout << s[lst[id][pos]];
  41. }
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0.01s 5960KB
stdin
Standard input is empty
stdout
Standard output is empty