fork(1) download
  1. #include<iostream>
  2. #include<unordered_map>
  3. using namespace std;
  4. void unlock(long long int arr[], int n, long long int k){
  5. unordered_map<long long int,int>m;
  6. for(long long int i=0;i<n;i++){
  7. m[arr[i]] = i;
  8. }
  9.  
  10. for(long long int i=n;i>=0&&k>0;i--){
  11. //long long int number = n;
  12. int best_pos = n-i;
  13. if(m[i]!=best_pos){
  14. int idx = m[i];
  15. m[i] = best_pos;
  16. m[arr[best_pos]] = m[arr[i]];
  17. swap(arr[idx],arr[best_pos]);
  18. }
  19.  
  20. k--;
  21. }
  22. }
  23. int main() {
  24. int n;
  25. long long int k,arr[100003];
  26. cin>>n>>k;
  27. for(long long int i=0;i<n;i++){
  28. cin>>arr[i];
  29. }
  30. unlock(arr,n,k);
  31. for(long long int i=0;i<n;i++){
  32. cout<<arr[i];
  33. }
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0s 4520KB
stdin
5 2
3 4 1 2 5
stdout
54123