Advertisement
adityagupta1089

nextperm results

Oct 17th, 2014
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. Problem: NEXTPERM
  2. State: Wrong Answer
  3. Total score for this submission: 0
  4. Test Case #0 for 2 points
  5. Wrong Answer
  6. Runtime: 0.12
  7. Test Case #1 for 2 points
  8. Wrong Answer
  9. Runtime: 0.124
  10. Test Case #2 for 2 points
  11. Wrong Answer
  12. Runtime: 0.124
  13. Test Case #3 for 2 points
  14. Wrong Answer
  15. Runtime: 0.12
  16. Test Case #4 for 2 points
  17. Wrong Answer
  18. Runtime: 0.116
  19. Test Case #5 for 2 points
  20. Wrong Answer
  21. Runtime: 0.124
  22. Test Case #6 for 2 points
  23. Wrong Answer
  24. Runtime: 0.124
  25. Test Case #7 for 2 points
  26. Wrong Answer
  27. Runtime: 0.14
  28. Test Case #8 for 2 points
  29. Wrong Answer
  30. Runtime: 0.108
  31. Test Case #9 for 2 points
  32. Wrong Answer
  33. Runtime: 0.124
  34. /**
  35. * Created by aditya on 16-10-2014.
  36. */
  37.  
  38. import java.io.BufferedInputStream;
  39. import java.util.ArrayList;
  40. import java.util.Scanner;
  41.  
  42. public class Main {
  43. public static void main(String args[]) {
  44. Scanner scan = new Scanner(new BufferedInputStream(System.in));
  45. int n = scan.nextInt();
  46. int k = scan.nextInt();
  47. ArrayList<Integer> list = new ArrayList<Integer>(k);
  48. ArrayList<Integer> list_out = new ArrayList<Integer>(k);
  49. for (int i = 0; i < k; i++) {
  50. list.add(scan.nextInt());
  51. }
  52. for (int j = 0; j < k; j++) {
  53. list_out.add(next_perm(list.get(j), n));
  54. }
  55. for (int temp : list_out) {
  56. System.out.println(temp);
  57. }
  58. System.out.flush();
  59. }
  60.  
  61. public static int next_perm(int k, int n) {
  62. int perm = 0;
  63. int number = k;
  64. int num[] = new int[n];
  65. for (int i = 0; i < n; i++) {
  66. num[i] = number % 10;
  67. number /= 10;
  68. }
  69. int k_max = 0;
  70. for (int i = 0; i < n; i++) {
  71. if (i == (n-1))
  72. break;
  73. if (num[i + 1] >= num[i]) {
  74. ++k_max;
  75. } else if (num[i + 1] < num[i]) {
  76. break;
  77. }
  78. }
  79. if(k_max==(n-1))return k;
  80. int j_max = k_max+1;
  81. for (int i = k_max; i >= 0; i--) {
  82. if (num[i] > num[k_max + 1]) {
  83. --j_max;
  84. } else {
  85. break;
  86. }
  87. }
  88. int temp=num[j_max];
  89. num[j_max]=num[k_max+1];
  90. num[k_max+1]=temp;
  91. for(int i=k_max,j=0;i>j;i--,j++){
  92. int tempo = num[i];
  93. num[i]=num[j];
  94. num[j]=tempo;
  95. }
  96. for (int i = 0; i < n; i++) {
  97. perm += num[i] * (int) Math.pow(10, i);
  98. }
  99. return perm;
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement