fork download
  1. #include <stdio.h>
  2.  
  3. void swap (int *x, int *y){
  4. int temp = *x;
  5. *x = *y;
  6. *y = temp;
  7. }
  8.  
  9. void rev (int A[], int start, int end){
  10. while (start < end){
  11. swap (&A[start], &A[end]);
  12. start++;
  13. end--;
  14. }
  15. }
  16.  
  17. int main(){
  18. int n, A[105];
  19. scanf("%d", &n);
  20.  
  21. for (int i = 0; i < n; i++){
  22. scanf("%d", &A[i]);
  23. }
  24.  
  25. int i = n - 2;
  26. while (i >= 0 && A[i] < A[i + 1]){
  27. i--;
  28. }
  29.  
  30. if (i < 0){
  31. printf("0\n");
  32. }
  33. else{
  34. int j = n - 1;
  35. while (A[j] > A[i]){
  36. j--;
  37. }
  38.  
  39. swap(&A[i], &A[j]);
  40.  
  41. rev(A,i + 1, n - 1);
  42.  
  43. for(int k = 0; k < n; k++){
  44. printf("%d", A[k]);
  45. if (k < n) printf(" ");
  46. }
  47. }
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 5308KB
stdin
5
3 1 2 5 4
stdout
3 1 2 4 5