fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. int main(){
  5. ios_base::sync_with_stdio(false);
  6. cin.tie(NULL);
  7. ll n,k,index_indices,index_input;
  8. cin>>n>>k;
  9. vector<ll>input(n);
  10. vector<ll>indices(n+1);
  11. for(ll i=0;i<n;i++){
  12. cin>>input[i];
  13. indices[input[i]]=i;
  14. }
  15. if(n==1){
  16. cout<<1;
  17. return 0;
  18. }
  19. index_indices=n;
  20. index_input=0;
  21. while(index_indices>0 && k>0){
  22. if(input[index_input]==index_indices){
  23. index_indices--;
  24. index_input++;
  25. continue;
  26. }
  27. else{
  28. ll t=input[index_input];
  29. ll value1=input[index_input];
  30. ll value2=index_indices;
  31. ll index1=index_input;
  32. ll index2=indices[index_indices];
  33. input[index_input]=input[indices[index_indices]];
  34. input[indices[index_indices]]=t;
  35. indices[value1]=index2;
  36. indices[value2]=index1;
  37. index_input++;
  38. index_indices--;
  39. k--;
  40. }
  41. }
  42. while(k>0){
  43. ll t=input[n-1];
  44. input[n-1]=input[n-2];
  45. input[n-2]=t;
  46. k--;
  47. }
  48. for(ll i=0;i<n;i++)
  49. cout<<input[i]<<" ";
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 15240KB
stdin
5 2
3 4 1 2 5
stdout
5 4 3 2 1