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