package chelper; import java.util.Arrays; import io.InputReader; import io.OutputWriter; import misc.GCJSolution; import misc.SimpleSavingChelperSolution; public class TaskA extends GCJSolution { public void solve(int testNumber, InputReader in, OutputWriter out) { wrapSolve(testNumber, in, out); } int M = 20; int[] explode(long x) { int[] digits = new int[M]; for (int i = M - 1; i >= 0; i--) { digits[i] = (int) (x % 10); x /= 10; } return digits; } long combine(int[] digits) { long x = 0; for (int i = 0; i < M; i++) { x *= 10; x += digits[i]; } return x; } @Override public void solve(int testNumber) { long x = in.nextLong(); int[] digits = explode(x); int[] digitsDown = Arrays.copyOf(digits, M); for (int i = 0; i < M; i++) { if (digitsDown[i] % 2 == 1) { digitsDown[i]--; for (int j = i + 1; j < M; j++) { digitsDown[j] = 8; } } } int[] digitsUp = Arrays.copyOf(digits, M); for (int i = 0; i < M; i++) { if (digitsUp[i] % 2 == 1) { digitsUp[i]++; for (int j = i; j >= 0; j--) { if (digitsUp[j] >= 10) { digitsUp[j - 1]++; digitsUp[j] -= 10; } } for (int j = i + 1; j < M; j++) { digitsUp[j] = 0; } i = -1; } } long a = combine(digitsUp); long b = combine(digitsDown); debug.println(a); debug.println(b); out.println(Math.min(a - x, x - b)); } }