fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int N;
  7. int numbers[10'000];
  8.  
  9. int main() {
  10. ios::sync_with_stdio(0);
  11. cin.tie(0);
  12. cout.tie(0);
  13.  
  14. cin>>N;
  15.  
  16. for(int i=0;i<N;i++) cin>>numbers[i];
  17.  
  18. int targetIdx = -1;
  19. int replaceNumber = 987654321;
  20. vector<int> usable;
  21. for(int i=N-1;i>=1;i--){
  22. usable.push_back(numbers[i]);
  23.  
  24. if(numbers[i]>numbers[i-1]){
  25. targetIdx = i-1;
  26. usable.push_back(numbers[i-1]);
  27. break;
  28. }
  29. }
  30. if(targetIdx==-1){
  31. cout<<-1;
  32. return 0;
  33. }
  34.  
  35. for(int i=0;i<usable.size();i++){
  36. if(numbers[targetIdx] < usable[i]){
  37. replaceNumber = min(replaceNumber, usable[i]);
  38. }
  39. }
  40. numbers[targetIdx] = replaceNumber;
  41. usable.erase(remove(usable.begin(), usable.end(), replaceNumber));
  42.  
  43. sort(usable.begin(), usable.end());
  44.  
  45. for(int i=0;i<targetIdx;i++) cout<<numbers[i]<<' ';
  46. cout<<replaceNumber<<' ';
  47. for(int i=0;i<usable.size();i++) cout<<usable[i]<<' ';
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0s 5304KB
stdin
3
1 3 2
stdout
2 1 3