fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. int n, k;
  5. cin >> n >> k;
  6. vector<int> perm(n), pos(n+1, 0);
  7. for (int i = 0; i < n; i++) {
  8. cin >> perm[i];
  9. pos[perm[i]] = i + 1;
  10. }
  11. /*for (int i = 0; i <= n; i++) {
  12. cout << pos[i] << " ";
  13. }*/
  14. //max -> pos,,, i -> perm
  15. for (int max = n, i = 0, swaps = 0; max > 0 && i < n && swaps < k; max--, i++) {
  16. int maxpos = pos[max];
  17. if (perm[i] != max) {
  18. swap(perm[i], perm[maxpos - 1]);
  19. pos[max] = i + 1;
  20. pos[perm[maxpos - 1]] = maxpos;
  21. swaps++;
  22. }
  23. }
  24. for (int i = 0; i < n; i++) {
  25. cout << perm[i] << " ";
  26. }
  27. return 0;
  28. }
Success #stdin #stdout 0.05s 3544KB
stdin
5 2
1 2 3 4 5
stdout
5 4 3 2 1