fork(1) download
  1. #include <iostream>
  2. #include <stack>
  3. #include <vector>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. int main() {
  8. // your code goes here
  9. int T;
  10. cin>>T;
  11. while(T--){
  12. int N;
  13. cin>>N;
  14. int temp;
  15. vector <int> v;
  16. for(int i=0;i<N;i++){
  17. cin>>temp;
  18. v.push_back(temp);
  19. }
  20. int i=N-2;
  21. int last = v[N-1];
  22. stack <int> st;
  23. st.push(last);
  24. v.pop_back();
  25. for(i;i>=0;i--){
  26. if(v[i]<st.top()){
  27. temp = v[i];
  28. st.push(v[i]);
  29. v.pop_back();
  30. break;
  31. }
  32. else{
  33. st.push(v[i]);
  34. v.pop_back();
  35. }
  36.  
  37. }
  38. if(st.top() == last){
  39. cout<<"-1"<<endl;
  40. break;
  41. }
  42. vector <int> v4u;
  43. while(!st.empty()){
  44. v4u.push_back(st.top());
  45. st.pop();
  46. }
  47. sort(v4u.begin(),v4u.end());
  48. int pos;
  49. int s = v4u.size();
  50.  
  51. for(int i=0;i<s;i++){
  52. if(temp<v4u[i]){
  53. pos=i;
  54. break;
  55. }
  56.  
  57. }
  58. swap(v4u[0],v4u[pos]);
  59.  
  60. for(int i=0;i<s;i++){
  61. v.push_back(v4u[i]);
  62. }
  63. for(int j=0;j<N;j++){
  64. cout<<v[j];
  65. }
  66. cout<<endl;
  67. }
  68. return 0;
  69. }
Success #stdin #stdout 0s 5628KB
stdin
2
5
1 5 4 8 5
10
1 4 7 4 5 8 4 1 8 6
stdout
15548
1474584618