package contests.contest27; import java.util.Arrays; /** * Created by sherxon on 4/8/17. */ public class NextGreaterElement3 { public static void main(String[] args) { System.out.println(nextGreaterElement(1999999999)); } static public int nextGreaterElement(int n) { if (n < 12) return -1; char[] c = String.valueOf(n).toCharArray(); reverse(c, 0, c.length - 1); for (int k = 1; k < c.length; k++) { if (c[k - 1] > c[k]) { int min = Integer.MAX_VALUE; int mini = k; for (int i = k - 1; i >= 0; i--) { if (c[i] < min && c[i] > c[k]) { min = c[i]; mini = i; } } char temp = c[mini]; c[mini] = c[k]; c[k] = temp; Arrays.sort(c, 0, k); reverse(c, 0, k - 1); break; } } reverse(c, 0, c.length - 1); int res; try { res = Integer.parseInt(new String(c)); } catch (Exception e) { return -1; } return res > n ? res : -1; } private static void reverse(char[] c, int i, int j) { while (i < j) { char temp = c[i]; c[i] = c[j]; c[j] = temp; i++; j--; } } }